home *** CD-ROM | disk | FTP | other *** search
/ Mac100% 1998 November / MAC100-1998-11.ISO.7z / MAC100-1998-11.ISO / オンラインソフト定点観測 / ユーティリティ / Mops 3.2.sea / Mops 3.2 / Mops source / PPC source / cg-regs < prev    next >
MacBinary  |  1998-05-21  |  47.0 KB  |  [TEXT/MSET]

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: MacBinary (archive/macBinary).

You can browse this item here: cg-regs

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Wed May 20 21:32:22 1998, modified Wed May 20 21:32:22 1998, creator 'MSET', type ASCII, 47548 bytes "cg-regs" , at 0xba3c 381 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MSET]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 07 63 67 2d 72 65 67 | 73 00 00 00 00 00 00 00 |..cg-reg|s.......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 53 45 | 54 00 00 00 00 00 00 00 |.TEXTMSE|T.......|
|00000050| 00 00 00 00 00 b9 bc 00 | 00 01 7d b1 89 34 a6 b1 |........|..}..4..|
|00000060| 89 34 a6 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.4......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 24 54 00 00 |........|....$T..|
|00000080| 6d 61 72 6b 65 72 20 6d | 5f 5f 63 67 2d 72 65 67 |marker m|__cg-reg|
|00000090| 73 0d 0d 50 50 43 3f 0d | 5b 49 46 5d 0d 66 61 6c |s..PPC?.|[IF].fal|
|000000a0| 73 65 09 63 6f 6e 73 74 | 61 6e 74 09 64 65 62 75 |se.const|ant.debu|
|000000b0| 67 3f 0d 66 61 6c 73 65 | 09 63 6f 6e 73 74 61 6e |g?.false|.constan|
|000000c0| 74 09 72 65 63 6f 6d 70 | 54 65 73 74 3f 0d 5b 45 |t.recomp|Test?.[E|
|000000d0| 4c 53 45 5d 0d 66 61 6c | 73 65 09 63 6f 6e 73 74 |LSE].fal|se.const|
|000000e0| 61 6e 74 09 64 65 62 75 | 67 3f 0d 66 61 6c 73 65 |ant.debu|g?.false|
|000000f0| 09 63 6f 6e 73 74 61 6e | 74 09 72 65 63 6f 6d 70 |.constan|t.recomp|
|00000100| 54 65 73 74 3f 0d 5b 54 | 48 45 4e 5d 0d 0d 0d 28 |Test?.[T|HEN]...(|
|00000110| 2a 20 54 68 69 73 20 66 | 69 6c 65 20 64 65 66 69 |* This f|ile defi|
|00000120| 6e 65 73 20 74 68 65 20 | 63 6c 61 73 73 65 73 20 |nes the |classes |
|00000130| 77 65 20 75 73 65 20 74 | 6f 20 64 65 73 63 72 69 |we use t|o descri|
|00000140| 62 65 20 74 68 65 20 50 | 50 43 20 72 65 67 69 73 |be the P|PC regis|
|00000150| 74 65 72 73 2c 0d 20 20 | 20 61 6e 64 20 63 72 65 |ters,. | and cre|
|00000160| 61 74 65 73 20 74 68 65 | 20 72 65 67 69 73 74 65 |ates the| registe|
|00000170| 72 20 6f 62 6a 65 63 74 | 73 2e 0d 2a 29 0d 0d 33 |r object|s..*)..3|
|00000180| 09 09 63 6f 6e 73 74 61 | 6e 74 09 73 70 69 6c 6c |..consta|nt.spill|
|00000190| 5f 63 6e 74 09 09 5c 20 | 74 68 65 20 6e 75 6d 62 |_cnt..\ |the numb|
|000001a0| 65 72 20 6f 66 20 72 65 | 67 73 20 77 65 20 73 70 |er of re|gs we sp|
|000001b0| 69 6c 6c 20 69 66 20 77 | 65 20 63 61 6e 27 74 0d |ill if w|e can't.|
|000001c0| 09 09 09 09 09 09 09 09 | 09 5c 20 20 6f 74 68 65 |........|.\ othe|
|000001d0| 72 77 69 73 65 20 67 65 | 74 20 61 20 66 72 65 65 |rwise ge|t a free|
|000001e0| 20 6f 6e 65 0d 0d 30 09 | 76 61 6c 75 65 09 23 67 | one..0.|value.#g|
|000001f0| 70 72 73 5f 63 6c 65 61 | 72 65 64 09 09 09 5c 20 |prs_clea|red...\ |
|00000200| 75 73 65 64 20 62 79 20 | 74 68 65 20 73 70 69 6c |used by |the spil|
|00000210| 6c 69 6e 67 20 63 6f 64 | 65 2c 20 74 6f 20 63 6f |ling cod|e, to co|
|00000220| 75 6e 74 0d 09 09 09 09 | 09 09 09 09 09 5c 20 20 |unt.....|.....\ |
|00000230| 74 68 65 20 47 50 52 73 | 20 77 65 20 61 63 74 75 |the GPRs| we actu|
|00000240| 61 6c 6c 79 20 66 72 65 | 65 20 75 70 0d 0d 5c 20 |ally fre|e up..\ |
|00000250| 53 6f 6d 65 20 75 73 65 | 66 75 6c 20 62 6f 69 6c |Some use|ful boil|
|00000260| 65 72 70 6c 61 74 65 20 | 69 6e 73 74 72 75 63 74 |erplate |instruct|
|00000270| 69 6f 6e 73 3a 0d 0d 50 | 50 43 3f 0d 5b 49 46 5d |ions:..P|PC?.[IF]|
|00000280| 09 09 5c 20 49 6e 20 74 | 68 69 73 20 63 61 73 65 |..\ In t|his case|
|00000290| 20 74 68 65 73 65 20 61 | 72 65 20 61 6c 72 65 61 | these a|re alrea|
|000002a0| 64 79 20 64 65 66 69 6e | 65 64 0d 09 09 09 5c 20 |dy defin|ed....\ |
|000002b0| 20 69 6e 20 74 68 65 20 | 36 38 6b 20 69 6d 61 67 | in the |68k imag|
|000002c0| 65 2c 20 61 6e 64 20 77 | 65 20 63 61 6e 27 74 20 |e, and w|e can't |
|000002d0| 69 6e 74 65 72 70 72 65 | 74 20 74 68 65 20 3c 3c |interpre|t the <<|
|000002e0| 20 6f 70 73 2c 0d 09 09 | 09 5c 20 20 73 6f 20 77 | ops,...|.\ so w|
|000002f0| 65 27 6c 6c 20 64 6f 20 | 69 74 20 74 68 69 73 20 |e'll do |it this |
|00000300| 77 61 79 3a 0d 09 09 09 | 0d 09 4c 52 3e 52 30 09 |way:....|..LR>R0.|
|00000310| 09 63 6f 6e 73 74 61 6e | 74 09 4c 52 3e 52 30 09 |.constan|t.LR>R0.|
|00000320| 09 5c 20 6d 66 6c 72 20 | 20 72 30 0d 09 52 30 3e |.\ mflr | r0..R0>|
|00000330| 4c 52 09 09 63 6f 6e 73 | 74 61 6e 74 09 52 30 3e |LR..cons|tant.R0>|
|00000340| 4c 52 09 09 5c 20 6d 74 | 6c 72 20 20 72 30 0d 09 |LR..\ mt|lr r0..|
|00000350| 42 4c 52 09 09 09 63 6f | 6e 73 74 61 6e 74 09 42 |BLR...co|nstant.B|
|00000360| 4c 52 09 09 09 5c 20 75 | 6e 63 6f 6e 64 69 74 69 |LR...\ u|nconditi|
|00000370| 6f 6e 61 6c 20 62 72 61 | 6e 63 68 20 74 6f 20 6c |onal bra|nch to l|
|00000380| 69 6e 6b 20 72 65 67 0d | 0d 5b 45 4c 53 45 5d 0d |ink reg.|.[ELSE].|
|00000390| 0d 09 33 31 20 32 36 20 | 3c 3c 0d 09 38 20 20 31 |..31 26 |<<..8 1|
|000003a0| 36 20 3c 3c 20 6f 72 0d | 09 33 33 39 20 31 20 3c |6 << or.|.339 1 <|
|000003b0| 3c 20 6f 72 09 09 63 6f | 6e 73 74 61 6e 74 09 4c |< or..co|nstant.L|
|000003c0| 52 3e 52 30 09 5c 20 6d | 66 6c 72 20 20 72 30 0d |R>R0.\ m|flr r0.|
|000003d0| 09 0d 09 33 31 20 32 36 | 20 3c 3c 0d 09 38 20 20 |...31 26| <<..8 |
|000003e0| 31 36 20 3c 3c 20 6f 72 | 0d 09 34 36 37 20 31 20 |16 << or|..467 1 |
|000003f0| 3c 3c 20 6f 72 09 09 63 | 6f 6e 73 74 61 6e 74 09 |<< or..c|onstant.|
|00000400| 52 30 3e 4c 52 09 5c 20 | 6d 74 6c 72 20 20 72 30 |R0>LR.\ |mtlr r0|
|00000410| 0d 0d 09 31 39 20 32 36 | 20 3c 3c 0d 20 20 24 20 |...19 26| <<. $ |
|00000420| 31 34 20 32 31 20 3c 3c | 20 20 6f 72 0d 09 31 36 |14 21 <<| or..16|
|00000430| 20 20 31 20 3c 3c 20 20 | 6f 72 09 63 6f 6e 73 74 | 1 << |or.const|
|00000440| 61 6e 74 09 42 4c 52 09 | 09 5c 20 75 6e 63 6f 6e |ant.BLR.|.\ uncon|
|00000450| 64 69 74 69 6f 6e 61 6c | 20 62 72 61 6e 63 68 20 |ditional| branch |
|00000460| 74 6f 20 6c 69 6e 6b 20 | 72 65 67 0d 0d 5b 54 48 |to link |reg..[TH|
|00000470| 45 4e 5d 0d 0d 3a 20 47 | 50 52 3e 43 54 52 20 20 |EN]..: G|PR>CTR |
|00000480| 28 20 72 65 67 23 20 2d | 2d 20 29 20 20 32 31 20 |( reg# -|- ) 21 |
|00000490| 3c 3c 20 20 24 20 37 43 | 30 39 30 33 41 36 20 6f |<< $ 7C|0903A6 o|
|000004a0| 72 20 20 63 6f 64 65 2c | 20 20 3b 0d 3a 20 43 54 |r code,| ;.: CT|
|000004b0| 52 3e 47 50 52 20 20 28 | 20 72 65 67 23 20 2d 2d |R>GPR (| reg# --|
|000004c0| 20 29 20 20 32 31 20 3c | 3c 20 20 24 20 37 43 30 | ) 21 <|< $ 7C0|
|000004d0| 39 30 32 41 36 20 6f 72 | 20 20 63 6f 64 65 2c 20 |902A6 or| code, |
|000004e0| 20 3b 0d 0d 3a 20 6e 6f | 70 2c 20 20 28 20 2d 2d | ;..: no|p, ( --|
|000004f0| 20 29 20 20 24 20 37 43 | 30 30 30 33 37 38 20 20 | ) $ 7C|000378 |
|00000500| 63 6f 64 65 2c 20 20 3b | 09 09 5c 20 6f 72 20 20 |code, ;|..\ or |
|00000510| 72 30 2c 20 72 30 2c 20 | 72 30 0d 0d 0d 66 6f 72 |r0, r0, |r0...for|
|00000520| 77 61 72 64 20 20 53 50 | 49 4c 4c 0d 66 6f 72 77 |ward SP|ILL.forw|
|00000530| 61 72 64 20 20 63 68 65 | 63 6b 5f 66 6f 72 5f 6d |ard che|ck_for_m|
|00000540| 6f 76 65 64 5f 73 74 6f | 72 65 73 0d 0d 0d 3a 63 |oved_sto|res...:c|
|00000550| 6c 61 73 73 20 20 52 45 | 46 45 52 45 4e 43 45 5f |lass RE|FERENCE_|
|00000560| 4c 49 53 54 20 20 73 75 | 70 65 72 7b 20 72 65 66 |LIST su|per{ ref|
|00000570| 65 72 65 6e 63 65 20 6f | 62 6a 5f 61 72 72 61 79 |erence o|bj_array|
|00000580| 20 7d 0d 0d 09 69 6e 74 | 09 53 49 5a 45 0d 09 0d | }...int|.SIZE...|
|00000590| 3a 6d 20 53 49 5a 45 3a | 09 69 6e 6c 69 6e 65 7b |:m SIZE:|.inline{|
|000005a0| 20 67 65 74 3a 20 73 69 | 7a 65 7d 09 67 65 74 3a | get: si|ze}.get:|
|000005b0| 20 73 69 7a 65 20 20 3b | 6d 0d 3a 6d 20 3e 53 69 | size ;|m.:m >Si|
|000005c0| 5a 45 3a 09 69 6e 6c 69 | 6e 65 7b 20 70 75 74 3a |ZE:.inli|ne{ put:|
|000005d0| 20 73 69 7a 65 7d 09 70 | 75 74 3a 20 73 69 7a 65 | size}.p|ut: size|
|000005e0| 20 20 3b 6d 0d 3a 6d 20 | 2b 53 49 5a 45 3a 09 69 | ;m.:m |+SIZE:.i|
|000005f0| 6e 6c 69 6e 65 7b 20 2b | 3a 20 73 69 7a 65 7d 09 |nline{ +|: size}.|
|00000600| 2b 3a 20 73 69 7a 65 20 | 20 20 20 3b 6d 0d 0d 3a |+: size | ;m..:|
|00000610| 6d 20 53 54 4b 3a 20 20 | 7b 20 6e 20 5c 20 69 6e |m STK: |{ n \ in|
|00000620| 64 65 78 20 2d 2d 20 7d | 0d 09 09 09 5c 20 55 73 |dex -- }|....\ Us|
|00000630| 69 6e 67 20 73 65 6c 66 | 20 61 73 20 61 20 73 74 |ing self| as a st|
|00000640| 61 63 6b 2c 20 73 65 6c | 65 63 74 73 20 74 68 65 |ack, sel|ects the|
|00000650| 20 6e 27 74 68 0d 09 09 | 09 5c 20 20 63 65 6c 6c | n'th...|.\ cell|
|00000660| 2e 20 20 57 65 20 64 6f | 6e 27 74 20 72 65 70 6f |. We do|n't repo|
|00000670| 72 74 20 61 6e 20 65 72 | 72 6f 72 20 69 66 20 6e |rt an er|ror if n|
|00000680| 20 69 73 20 67 72 65 61 | 74 65 72 20 74 68 61 6e | is grea|ter than|
|00000690| 20 74 68 65 0d 09 09 09 | 5c 20 20 63 75 72 72 65 | the....|\ curre|
|000006a0| 6e 74 20 64 65 70 74 68 | 2c 20 73 69 6e 63 65 20 |nt depth|, since |
|000006b0| 74 68 65 72 65 20 61 72 | 65 20 73 69 74 75 61 74 |there ar|e situat|
|000006c0| 69 6f 6e 73 20 69 6e 20 | 65 71 75 61 6c 69 7a 69 |ions in |equalizi|
|000006d0| 6e 67 20 6f 76 65 72 0d | 09 09 09 5c 20 20 62 61 |ng over.|...\ ba|
|000006e0| 73 69 63 20 62 6c 6f 63 | 6b 73 20 77 68 65 72 65 |sic bloc|ks where|
|000006f0| 20 69 74 20 77 6f 75 6c | 64 20 62 65 20 61 20 62 | it woul|d be a b|
|00000700| 69 67 20 70 65 73 74 20 | 74 6f 20 63 68 65 63 6b |ig pest |to check|
|00000710| 20 61 6c 6c 20 74 68 65 | 20 74 69 6d 65 2e 0d 09 | all the| time...|
|00000720| 09 09 5c 20 20 57 65 20 | 6a 75 73 74 20 6d 61 6b |..\ We |just mak|
|00000730| 65 20 73 75 72 65 20 73 | 75 63 68 20 6f 75 74 2d |e sure s|uch out-|
|00000740| 6f 66 2d 72 61 6e 67 65 | 20 63 65 6c 6c 73 20 72 |of-range| cells r|
|00000750| 65 74 75 72 6e 20 22 6e | 6f 52 65 66 22 20 74 79 |eturn "n|oRef" ty|
|00000760| 70 65 2e 0d 0d 09 41 53 | 53 45 52 54 7b 20 6e 20 |pe....AS|SERT{ n |
|00000770| 30 3e 20 7d 09 09 5c 20 | 65 72 72 6f 72 20 69 66 |0> }..\ |error if|
|00000780| 20 73 74 6b 3a 20 63 61 | 6c 6c 65 64 20 77 69 74 | stk: ca|lled wit|
|00000790| 68 20 61 20 6e 65 67 20 | 6f 72 20 7a 65 72 6f 20 |h a neg |or zero |
|000007a0| 69 6e 64 65 78 0d 09 67 | 65 74 3a 20 73 69 7a 65 |index..g|et: size|
|000007b0| 20 20 6e 20 2d 20 20 2d | 3e 20 69 6e 64 65 78 0d | n - -|> index.|
|000007c0| 09 69 6e 64 65 78 20 30 | 3c 0d 09 49 46 09 6c 69 |.index 0|<..IF.li|
|000007d0| 6d 69 74 20 31 2d 20 73 | 65 6c 65 63 74 3a 20 73 |mit 1- s|elect: s|
|000007e0| 65 6c 66 0d 09 09 6e 6f | 52 65 66 20 3e 72 65 66 |elf...no|Ref >ref|
|000007f0| 54 79 70 65 3a 20 73 65 | 6c 66 0d 09 45 4c 53 45 |Type: se|lf..ELSE|
|00000800| 0d 09 09 69 6e 64 65 78 | 20 20 73 65 6c 65 63 74 |...index| select|
|00000810| 3a 20 73 65 6c 66 0d 09 | 54 48 45 4e 0d 3b 6d 0d |: self..|THEN.;m.|
|00000820| 0d 3a 6d 20 50 55 53 48 | 3a 09 5c 20 28 20 5e 72 |.:m PUSH|:.\ ( ^r|
|00000830| 65 66 20 2d 2d 20 29 0d | 09 67 65 74 3a 20 73 69 |ef -- ).|.get: si|
|00000840| 7a 65 20 20 73 65 6c 65 | 63 74 3a 20 73 65 6c 66 |ze sele|ct: self|
|00000850| 0d 09 2d 3e 3a 20 73 65 | 6c 66 0d 09 31 20 2b 3a |..->: se|lf..1 +:|
|00000860| 20 73 69 7a 65 0d 3b 6d | 0d 0d 3a 6d 20 4d 4f 56 | size.;m|..:m MOV|
|00000870| 45 44 4f 57 4e 3a 09 09 | 5c 20 6d 6f 76 65 73 20 |EDOWN:..|\ moves |
|00000880| 61 6c 6c 20 69 74 65 6d | 73 20 22 64 6f 77 6e 22 |all item|s "down"|
|00000890| 20 74 6f 20 6d 61 6b 65 | 20 72 6f 6f 6d 20 66 6f | to make| room fo|
|000008a0| 72 20 61 6e 6f 74 68 65 | 72 2e 0d 09 09 09 09 09 |r anothe|r.......|
|000008b0| 5c 20 20 4c 65 61 76 65 | 73 20 65 6c 65 6d 65 6e |\ Leave|s elemen|
|000008c0| 74 20 7a 65 72 6f 20 73 | 65 6c 65 63 74 65 64 2e |t zero s|elected.|
|000008d0| 0d 09 67 65 74 3a 20 73 | 69 7a 65 0d 09 49 46 09 |..get: s|ize..IF.|
|000008e0| 67 65 74 3a 20 73 69 7a | 65 0d 09 09 46 4f 52 09 |get: siz|e...FOR.|
|000008f0| 69 20 5e 65 6c 65 6d 0d | 09 09 09 69 20 31 2b 20 |i ^elem.|...i 1+ |
|00000900| 73 65 6c 65 63 74 3a 20 | 73 65 6c 66 0d 09 09 09 |select: |self....|
|00000910| 2d 3e 3a 20 73 65 6c 66 | 0d 09 09 4e 45 58 54 0d |->: self|...NEXT.|
|00000920| 09 54 48 45 4e 0d 09 31 | 20 2b 3a 20 73 69 7a 65 |.THEN..1| +: size|
|00000930| 0d 09 30 20 73 65 6c 65 | 63 74 3a 20 73 65 6c 66 |..0 sele|ct: self|
|00000940| 0d 3b 6d 0d 0d 3a 6d 20 | 4d 4f 56 45 55 50 3a 0d |.;m..:m |MOVEUP:.|
|00000950| 09 67 65 74 3a 20 73 69 | 7a 65 20 20 4e 49 46 20 |.get: si|ze NIF |
|00000960| 2e 22 20 6d 6f 76 65 75 | 70 3a 20 66 69 6e 64 73 |." moveu|p: finds|
|00000970| 20 7a 65 72 6f 20 73 69 | 7a 65 22 20 63 72 0d 09 | zero si|ze" cr..|
|00000980| 09 09 09 09 70 72 69 6e | 74 61 6c 6c 3a 20 73 65 |....prin|tall: se|
|00000990| 6c 66 20 20 28 20 31 20 | 64 69 65 20 29 0d 09 09 |lf ( 1 |die )...|
|000009a0| 09 20 20 20 54 48 45 4e | 0d 0d 09 30 20 73 65 6c |. THEN|...0 sel|
|000009b0| 65 63 74 3a 20 73 65 6c | 66 20 20 66 72 65 65 3a |ect: sel|f free:|
|000009c0| 20 73 65 6c 66 09 09 5c | 20 6e 6f 74 65 20 2d 20 | self..\| note - |
|000009d0| 72 65 67 20 69 73 20 6e | 6f 77 20 73 65 6c 65 63 |reg is n|ow selec|
|000009e0| 74 65 64 0d 09 0d 09 67 | 65 74 3a 20 72 65 66 54 |ted....g|et: refT|
|000009f0| 79 70 65 0d 09 53 45 4c | 45 43 54 5b 20 67 70 72 |ype..SEL|ECT[ gpr|
|00000a00| 52 65 66 20 5d 3d 3e 09 | 3f 63 6c 65 61 72 5f 47 |Ref ]=>.|?clear_G|
|00000a10| 50 52 0d 09 09 20 20 5b | 20 63 72 52 65 66 20 20 |PR... [| crRef |
|00000a20| 5d 3d 3e 09 3f 63 6c 65 | 61 72 5f 43 52 0d 0d 09 |]=>.?cle|ar_CR...|
|00000a30| 09 44 45 46 41 55 4c 54 | 3d 3e 09 09 64 72 6f 70 |.DEFAULT|=>..drop|
|00000a40| 09 5c 20 6e 6f 74 20 61 | 6e 20 65 72 72 6f 72 20 |.\ not a|n error |
|00000a50| 2d 20 6a 75 73 74 20 6e | 6f 74 68 69 6e 67 20 74 |- just n|othing t|
|00000a60| 6f 20 64 6f 0d 09 5d 53 | 45 4c 45 43 54 0d 0d 09 |o do..]S|ELECT...|
|00000a70| 31 20 2d 3a 20 73 69 7a | 65 0d 09 67 65 74 3a 20 |1 -: siz|e..get: |
|00000a80| 73 69 7a 65 20 20 30 0d | 09 3f 44 4f 09 69 20 31 |size 0.|.?DO.i 1|
|00000a90| 2b 20 5e 65 6c 65 6d 0d | 09 09 69 20 73 65 6c 65 |+ ^elem.|..i sele|
|00000aa0| 63 74 3a 20 73 65 6c 66 | 0d 09 09 2d 3e 3a 20 73 |ct: self|...->: s|
|00000ab0| 65 6c 66 0d 09 4c 4f 4f | 50 0d 3b 6d 0d 0d 3a 6d |elf..LOO|P.;m..:m|
|00000ac0| 20 53 41 56 45 3a 0d 09 | 67 65 74 3a 20 73 69 7a | SAVE:..|get: siz|
|00000ad0| 65 20 20 30 20 0d 09 3f | 44 4f 20 20 69 20 73 65 |e 0 ..?|DO i se|
|00000ae0| 6c 65 63 74 3a 20 73 65 | 6c 66 20 20 73 74 61 63 |lect: se|lf stac|
|00000af0| 6b 3a 20 73 65 6c 66 20 | 20 4c 4f 4f 50 0d 09 67 |k: self | LOOP..g|
|00000b00| 65 74 3a 20 73 69 7a 65 | 0d 3b 6d 0d 0d 3a 6d 20 |et: size|.;m..:m |
|00000b10| 52 45 53 54 4f 52 45 3a | 0d 09 64 75 70 20 20 70 |RESTORE:|..dup p|
|00000b20| 75 74 3a 20 73 69 7a 65 | 20 20 3f 64 75 70 20 30 |ut: size| ?dup 0|
|00000b30| 45 58 49 54 0d 09 46 4f | 52 20 20 69 20 73 65 6c |EXIT..FO|R i sel|
|00000b40| 65 63 74 3a 20 73 65 6c | 66 20 20 75 6e 73 74 61 |ect: sel|f unsta|
|00000b50| 63 6b 3a 20 73 65 6c 66 | 20 20 4e 45 58 54 0d 3b |ck: self| NEXT.;|
|00000b60| 6d 0d 0d 3a 6d 20 50 52 | 49 4e 54 41 4c 4c 3a 0d |m..:m PR|INTALL:.|
|00000b70| 09 2e 22 20 64 65 70 74 | 68 3a 20 22 20 20 67 65 |.." dept|h: " ge|
|00000b80| 74 3a 20 73 69 7a 65 20 | 2e 20 20 63 72 0d 09 67 |t: size |. cr..g|
|00000b90| 65 74 3a 20 73 69 7a 65 | 20 30 3c 0d 09 49 46 09 |et: size| 0<..IF.|
|00000ba0| 63 6c 65 61 72 3a 20 73 | 69 7a 65 20 20 45 58 49 |clear: s|ize EXI|
|00000bb0| 54 20 20 54 48 45 4e 0d | 09 67 65 74 3a 20 73 69 |T THEN.|.get: si|
|00000bc0| 7a 65 20 20 30 45 58 49 | 54 0d 09 67 65 74 3a 20 |ze 0EXI|T..get: |
|00000bd0| 63 75 72 72 65 6e 74 0d | 09 67 65 74 3a 20 73 69 |current.|.get: si|
|00000be0| 7a 65 0d 09 46 4f 52 20 | 20 3f 70 61 75 73 65 20 |ze..FOR | ?pause |
|00000bf0| 20 69 20 73 65 6c 65 63 | 74 3a 20 73 65 6c 66 20 | i selec|t: self |
|00000c00| 20 70 72 69 6e 74 3a 20 | 73 65 6c 66 20 20 4e 45 | print: |self NE|
|00000c10| 58 54 0d 09 73 65 6c 65 | 63 74 3a 20 73 65 6c 66 |XT..sele|ct: self|
|00000c20| 0d 3b 6d 0d 0d 3b 63 6c | 61 73 73 0d 0d 0d 32 34 |.;m..;cl|ass...24|
|00000c30| 09 72 65 66 65 72 65 6e | 63 65 5f 6c 69 73 74 09 |.referen|ce_list.|
|00000c40| 43 53 54 4b 09 09 5c 20 | 43 6f 6d 70 69 6c 65 20 |CSTK..\ |Compile |
|00000c50| 74 69 6d 65 20 73 74 61 | 63 6b 20 2d 20 6d 61 70 |time sta|ck - map|
|00000c60| 73 20 74 68 65 20 72 75 | 6e 2d 74 69 6d 65 0d 09 |s the ru|n-time..|
|00000c70| 09 09 09 09 09 09 09 5c | 20 64 61 74 61 20 73 74 |.......\| data st|
|00000c80| 61 63 6b 20 74 6f 20 72 | 65 67 73 0d 0d 32 34 09 |ack to r|egs..24.|
|00000c90| 72 65 66 65 72 65 6e 63 | 65 5f 6c 69 73 74 09 43 |referenc|e_list.C|
|00000ca0| 53 54 4b 32 09 09 5c 20 | 55 73 65 64 20 69 6e 20 |STK2..\ |Used in |
|00000cb0| 65 71 75 61 6c 69 7a 69 | 6e 67 20 62 65 74 77 65 |equalizi|ng betwe|
|00000cc0| 65 6e 20 62 61 73 69 63 | 20 62 6c 6f 63 6b 73 0d |en basic| blocks.|
|00000cd0| 32 34 09 72 65 66 65 72 | 65 6e 63 65 5f 6c 69 73 |24.refer|ence_lis|
|00000ce0| 74 09 43 53 54 4b 32 5f | 4f 52 49 47 09 5c 20 44 |t.CSTK2_|ORIG.\ D|
|00000cf0| 69 74 74 6f 0d 0d 32 34 | 09 72 65 66 65 72 65 6e |itto..24|.referen|
|00000d00| 63 65 5f 6c 69 73 74 09 | 43 53 54 4b 5f 54 45 4d |ce_list.|CSTK_TEM|
|00000d10| 50 09 5c 20 46 6f 72 20 | 73 63 72 61 74 63 68 20 |P.\ For |scratch |
|00000d20| 77 68 69 6c 65 20 65 71 | 75 61 6c 69 7a 69 6e 67 |while eq|ualizing|
|00000d30| 0d 0d 32 34 09 72 65 66 | 65 72 65 6e 63 65 5f 6c |..24.ref|erence_l|
|00000d40| 69 73 74 09 46 43 53 54 | 4b 09 09 5c 20 46 6c 6f |ist.FCST|K..\ Flo|
|00000d50| 61 74 69 6e 67 20 63 6f | 6d 70 69 6c 65 20 74 69 |ating co|mpile ti|
|00000d60| 6d 65 20 73 74 61 63 6b | 0d 0d 32 34 09 72 65 66 |me stack|..24.ref|
|00000d70| 65 72 65 6e 63 65 5f 6c | 69 73 74 09 46 43 53 54 |erence_l|ist.FCST|
|00000d80| 4b 32 0d 32 34 09 72 65 | 66 65 72 65 6e 63 65 5f |K2.24.re|ference_|
|00000d90| 6c 69 73 74 09 46 43 53 | 54 4b 32 5f 4f 52 49 47 |list.FCS|TK2_ORIG|
|00000da0| 0d 0d 32 34 09 72 65 66 | 65 72 65 6e 63 65 5f 6c |..24.ref|erence_l|
|00000db0| 69 73 74 09 46 43 53 54 | 4b 5f 54 45 4d 50 0d 0d |ist.FCST|K_TEMP..|
|00000dc0| 0d 6f 62 6a 50 74 72 09 | 61 52 65 66 09 63 6c 61 |.objPtr.|aRef.cla|
|00000dd0| 73 73 5f 69 73 20 72 65 | 66 65 72 65 6e 63 65 0d |ss_is re|ference.|
|00000de0| 6f 62 6a 50 74 72 09 61 | 52 65 66 32 09 63 6c 61 |objPtr.a|Ref2.cla|
|00000df0| 73 73 5f 69 73 20 72 65 | 66 65 72 65 6e 63 65 0d |ss_is re|ference.|
|00000e00| 0d 6f 62 6a 50 74 72 09 | 61 52 65 66 4c 09 63 6c |.objPtr.|aRefL.cl|
|00000e10| 61 73 73 5f 69 73 20 72 | 65 66 65 72 65 6e 63 65 |ass_is r|eference|
|00000e20| 5f 6c 69 73 74 0d 0d 0d | 28 2a 09 4f 44 73 5f 43 |_list...|(*.ODs_C|
|00000e30| 4c 41 53 53 20 69 73 20 | 61 6e 20 61 72 72 61 79 |LASS is |an array|
|00000e40| 20 6f 66 20 4f 44 20 6f | 62 6a 65 63 74 73 2c 20 | of OD o|bjects, |
|00000e50| 64 65 66 69 6e 65 64 20 | 75 73 69 6e 67 20 6f 62 |defined |using ob|
|00000e60| 6a 5f 61 72 72 61 79 2e | 0d 09 57 65 27 6c 6c 20 |j_array.|..We'll |
|00000e70| 75 73 65 20 74 68 69 73 | 20 63 6c 61 73 73 20 66 |use this| class f|
|00000e80| 6f 72 20 6f 75 72 20 33 | 20 72 65 67 69 73 74 65 |or our 3| registe|
|00000e90| 72 20 66 69 6c 65 73 20 | 2d 20 47 50 52 73 2c 20 |r files |- GPRs, |
|00000ea0| 46 50 52 73 20 61 6e 64 | 20 43 52 73 2e 0d 2a 29 |FPRs and| CRs..*)|
|00000eb0| 0d 0d 0d 3a 63 6c 61 73 | 73 09 4f 44 73 5f 43 4c |...:clas|s.ODs_CL|
|00000ec0| 41 53 53 20 20 73 75 70 | 65 72 7b 20 4f 44 20 6c |ASS sup|er{ OD l|
|00000ed0| 61 72 67 65 5f 6f 62 6a | 5f 61 72 72 61 79 20 7d |arge_obj|_array }|
|00000ee0| 0d 0d 6f 62 6a 50 74 72 | 09 73 70 69 6c 6c 4f 44 |..objPtr|.spillOD|
|00000ef0| 73 20 20 63 6c 61 73 73 | 5f 69 73 20 4f 44 73 5f |s class|_is ODs_|
|00000f00| 63 6c 61 73 73 0d 0d 09 | 69 6e 74 09 09 6c 61 73 |class...|int..las|
|00000f10| 74 5f 61 6c 6c 6f 63 61 | 74 65 64 0d 09 69 6e 74 |t_alloca|ted..int|
|00000f20| 09 09 61 6c 6c 6f 63 5f | 6c 69 6d 69 74 09 09 5c |..alloc_|limit..\|
|00000f30| 20 6c 61 73 74 20 72 65 | 67 23 20 77 65 20 63 61 | last re|g# we ca|
|00000f40| 6e 20 61 6c 6c 6f 63 61 | 74 65 0d 0d 0d 3a 6d 20 |n alloca|te...:m |
|00000f50| 4c 41 53 54 5f 41 4c 4c | 4f 43 41 54 45 44 3a 09 |LAST_ALL|OCATED:.|
|00000f60| 09 67 65 74 3a 20 6c 61 | 73 74 5f 61 6c 6c 6f 63 |.get: la|st_alloc|
|00000f70| 61 74 65 64 20 20 3b 6d | 0d 3a 6d 20 3e 4c 41 53 |ated ;m|.:m >LAS|
|00000f80| 54 5f 41 4c 4c 4f 43 41 | 54 45 44 3a 09 09 70 75 |T_ALLOCA|TED:..pu|
|00000f90| 74 3a 20 6c 61 73 74 5f | 61 6c 6c 6f 63 61 74 65 |t: last_|allocate|
|00000fa0| 64 20 20 3b 6d 0d 0d 3a | 6d 20 3e 41 4c 4c 4f 43 |d ;m..:|m >ALLOC|
|00000fb0| 5f 4c 49 4d 49 54 3a 09 | 09 70 75 74 3a 20 61 6c |_LIMIT:.|.put: al|
|00000fc0| 6c 6f 63 5f 6c 69 6d 69 | 74 09 3b 6d 0d 0d 70 72 |loc_limi|t.;m..pr|
|00000fd0| 69 76 61 74 65 0d 0d 28 | 2a 20 57 65 20 63 61 6c |ivate..(|* We cal|
|00000fe0| 6c 20 69 73 5f 72 65 67 | 5f 75 6e 75 73 65 64 3f |l is_reg|_unused?|
|00000ff0| 3a 20 69 6e 20 74 68 65 | 20 66 69 72 73 74 20 6c |: in the| first l|
|00001000| 6f 6f 70 20 77 68 69 6c | 65 20 74 72 79 69 6e 67 |oop whil|e trying|
|00001010| 20 74 6f 20 66 69 6e 64 | 20 61 20 66 72 65 65 0d | to find| a free.|
|00001020| 20 20 20 72 65 67 2e 20 | 20 41 6e 20 22 75 6e 75 | reg. | An "unu|
|00001030| 73 65 64 22 20 72 65 67 | 20 69 73 20 70 72 65 66 |sed" reg| is pref|
|00001040| 65 72 61 62 6c 65 20 74 | 6f 20 6f 6e 65 20 77 69 |erable t|o one wi|
|00001050| 74 68 20 61 20 7a 65 72 | 6f 20 72 65 66 43 6e 74 |th a zer|o refCnt|
|00001060| 2c 20 73 69 6e 63 65 0d | 20 20 20 74 68 65 20 6c |, since.| the l|
|00001070| 61 74 74 65 72 20 63 6f | 75 6c 64 20 73 74 69 6c |atter co|uld stil|
|00001080| 6c 20 68 6f 6c 64 20 61 | 20 76 61 6c 69 64 20 76 |l hold a| valid v|
|00001090| 61 6c 75 65 20 74 68 61 | 74 20 63 6f 75 6c 64 20 |alue tha|t could |
|000010a0| 62 65 20 72 65 75 73 65 | 64 20 69 6e 0d 20 20 20 |be reuse|d in. |
|000010b0| 66 75 74 75 72 65 2c 20 | 6f 72 20 6d 61 79 20 68 |future, |or may h|
|000010c0| 61 76 65 20 6a 75 73 74 | 20 72 65 63 65 6e 74 6c |ave just| recentl|
|000010d0| 79 20 62 65 65 6e 20 75 | 73 65 64 20 61 6e 64 20 |y been u|sed and |
|000010e0| 73 6f 20 6e 6f 74 20 62 | 65 20 61 76 61 6c 69 61 |so not b|e avalia|
|000010f0| 62 6c 65 0d 20 20 20 66 | 6f 72 20 72 65 74 61 72 |ble. f|or retar|
|00001100| 67 65 74 74 69 6e 67 20 | 61 6e 20 65 61 72 6c 69 |getting |an earli|
|00001110| 65 72 20 6f 70 2e 0d 20 | 20 20 46 61 63 74 6f 72 |er op.. | Factor|
|00001120| 69 6e 67 20 6f 75 74 20 | 74 68 69 73 20 6d 65 74 |ing out |this met|
|00001130| 68 6f 64 20 61 6c 6c 6f | 77 73 20 75 73 20 74 6f |hod allo|ws us to|
|00001140| 20 74 69 6e 6b 65 72 20 | 77 69 74 68 20 69 74 20 | tinker |with it |
|00001150| 61 20 62 69 74 2e 0d 2a | 29 0d 0d 3a 6d 20 69 73 |a bit..*|)..:m is|
|00001160| 5f 72 65 67 5f 75 6e 75 | 73 65 64 3f 3a 20 20 28 |_reg_unu|sed?: (|
|00001170| 20 2d 2d 20 62 20 29 0d | 0d 09 28 2a 20 46 69 72 | -- b ).|..(* Fir|
|00001180| 73 74 20 77 65 20 63 61 | 6e 20 6f 6e 6c 79 20 67 |st we ca|n only g|
|00001190| 72 61 62 20 61 20 72 65 | 67 20 69 66 20 69 74 73 |rab a re|g if its|
|000011a0| 20 72 65 66 43 6e 74 20 | 69 73 20 7a 65 72 6f 2e | refCnt |is zero.|
|000011b0| 20 20 49 66 20 69 74 27 | 73 0d 09 20 20 20 6e 6f | If it'|s.. no|
|000011c0| 6e 7a 65 72 6f 2c 20 74 | 68 65 20 72 65 67 20 69 |nzero, t|he reg i|
|000011d0| 73 20 6c 69 76 65 2c 20 | 73 6f 20 77 65 20 63 61 |s live, |so we ca|
|000011e0| 6e 27 74 20 75 73 65 20 | 69 74 20 6e 6f 20 6d 61 |n't use |it no ma|
|000011f0| 74 74 65 72 20 77 68 61 | 74 2e 0d 09 20 20 20 28 |tter wha|t... (|
|00001200| 54 68 69 73 20 61 6c 73 | 6f 20 61 6c 6c 6f 77 73 |This als|o allows|
|00001210| 20 75 73 20 74 6f 20 62 | 6c 6f 63 6b 20 61 20 70 | us to b|lock a p|
|00001220| 61 72 74 69 63 75 6c 61 | 72 20 72 65 67 20 62 65 |articula|r reg be|
|00001230| 69 6e 67 20 61 6c 6c 6f | 63 61 74 65 64 2c 0d 09 |ing allo|cated,..|
|00001240| 20 20 20 65 76 65 6e 20 | 69 66 20 69 74 27 73 20 | even |if it's |
|00001250| 65 6d 70 74 79 2c 20 62 | 79 20 73 65 74 74 69 6e |empty, b|y settin|
|00001260| 67 20 69 74 73 20 72 65 | 66 63 6e 74 20 6e 6f 6e |g its re|fcnt non|
|00001270| 7a 65 72 6f 2e 20 20 57 | 65 20 6e 65 65 64 20 74 |zero. W|e need t|
|00001280| 6f 0d 09 20 20 20 64 6f | 20 74 68 69 73 20 66 6f |o.. do| this fo|
|00001290| 72 20 43 52 30 20 69 6e | 20 70 61 72 74 69 63 75 |r CR0 in| particu|
|000012a0| 6c 61 72 2e 0d 09 2a 29 | 0d 09 67 65 74 3a 20 72 |lar...*)|..get: r|
|000012b0| 65 66 43 6e 74 20 49 46 | 20 20 66 61 6c 73 65 20 |efCnt IF| false |
|000012c0| 20 45 58 49 54 20 20 54 | 48 45 4e 0d 09 0d 09 28 | EXIT T|HEN....(|
|000012d0| 2a 20 4e 6f 77 20 77 65 | 20 6c 6f 6f 6b 20 66 6f |* Now we| look fo|
|000012e0| 72 20 61 20 63 6f 6d 70 | 6c 65 74 65 6c 79 20 75 |r a comp|letely u|
|000012f0| 6e 75 73 65 64 20 72 65 | 67 2c 20 6f 72 20 6f 6e |nused re|g, or on|
|00001300| 65 20 77 69 74 68 20 74 | 79 70 65 0d 09 20 20 20 |e with t|ype.. |
|00001310| 6f 74 55 6e 6b 6e 6f 77 | 6e 20 61 6e 64 20 6c 61 |otUnknow|n and la|
|00001320| 73 74 52 65 66 43 44 50 | 20 61 74 20 6f 72 20 62 |stRefCDP| at or b|
|00001330| 65 66 6f 72 65 20 74 68 | 65 20 63 75 72 72 65 6e |efore th|e curren|
|00001340| 74 20 62 61 73 69 63 20 | 62 6c 6f 63 6b 0d 09 20 |t basic |block.. |
|00001350| 20 20 73 74 61 72 74 2e | 20 20 54 68 61 74 27 73 | start.| That's|
|00001360| 20 6a 75 73 74 20 61 73 | 20 67 6f 6f 64 2c 20 61 | just as| good, a|
|00001370| 73 20 69 74 20 63 6f 75 | 6c 64 20 6e 65 76 65 72 |s it cou|ld never|
|00001380| 20 62 65 20 72 65 75 73 | 65 64 2c 20 61 6e 64 0d | be reus|ed, and.|
|00001390| 09 20 20 20 63 6f 75 6c | 64 20 6e 65 76 65 72 20 |. coul|d never |
|000013a0| 62 6c 6f 63 6b 20 61 20 | 72 65 74 61 72 67 65 74 |block a |retarget|
|000013b0| 74 69 6e 67 2e 0d 09 2a | 29 0d 09 67 65 74 3a 20 |ting...*|)..get: |
|000013c0| 6f 70 54 79 70 65 20 20 | 4e 49 46 20 20 74 72 75 |opType |NIF tru|
|000013d0| 65 20 20 45 58 49 54 20 | 20 54 48 45 4e 0d 09 67 |e EXIT | THEN..g|
|000013e0| 65 74 3a 20 6f 70 54 79 | 70 65 20 20 6f 74 55 6e |et: opTy|pe otUn|
|000013f0| 6b 6e 6f 77 6e 43 6f 64 | 65 73 20 3e 20 20 49 46 |knownCod|es > IF|
|00001400| 20 20 66 61 6c 73 65 20 | 20 45 58 49 54 20 20 54 | false | EXIT T|
|00001410| 48 45 4e 0d 0d 09 67 65 | 74 3a 20 6c 61 73 74 52 |HEN...ge|t: lastR|
|00001420| 65 66 43 44 50 20 20 62 | 61 73 69 63 5f 62 6c 6f |efCDP b|asic_blo|
|00001430| 63 6b 5f 73 74 61 72 74 | 20 75 3c 3d 0d 09 49 46 |ck_start| u<=..IF|
|00001440| 0d 09 09 67 65 74 3a 20 | 6f 70 43 44 50 20 20 62 |...get: |opCDP b|
|00001450| 61 73 69 63 5f 62 6c 6f | 63 6b 5f 73 74 61 72 74 |asic_blo|ck_start|
|00001460| 20 75 3e 0d 09 09 49 46 | 0d 09 09 09 67 65 74 3a | u>...IF|....get:|
|00001470| 20 6f 70 43 44 50 20 20 | 70 75 74 3a 20 6c 61 73 | opCDP |put: las|
|00001480| 74 52 65 66 43 44 50 0d | 09 09 54 48 45 4e 0d 09 |tRefCDP.|..THEN..|
|00001490| 09 74 72 75 65 20 20 45 | 58 49 54 0d 09 54 48 45 |.true E|XIT..THE|
|000014a0| 4e 0d 09 66 61 6c 73 65 | 0d 3b 6d 0d 0d 70 75 62 |N..false|.;m..pub|
|000014b0| 6c 69 63 0d 0d 28 2a 09 | 47 65 74 46 72 65 65 52 |lic..(*.|GetFreeR|
|000014c0| 65 67 3a 20 64 6f 65 73 | 20 6a 75 73 74 20 74 68 |eg: does| just th|
|000014d0| 61 74 2e 20 20 57 65 20 | 66 69 72 73 74 20 74 72 |at. We |first tr|
|000014e0| 79 20 74 6f 20 66 69 6e | 64 20 61 20 63 6f 6d 70 |y to fin|d a comp|
|000014f0| 6c 65 74 65 6c 79 20 75 | 6e 75 73 65 64 0d 09 72 |letely u|nused..r|
|00001500| 65 67 2e 20 20 49 66 20 | 74 68 61 74 20 66 61 69 |eg. If |that fai|
|00001510| 6c 73 2c 20 77 65 20 63 | 61 6e 20 64 6f 20 6f 6e |ls, we c|an do on|
|00001520| 65 20 6f 66 20 74 77 6f | 20 74 68 69 6e 67 73 20 |e of two| things |
|00001530| 2d 20 77 65 20 63 61 6e | 20 67 72 61 62 20 61 20 |- we can| grab a |
|00001540| 72 65 67 0d 09 77 68 69 | 63 68 20 69 73 20 69 6e |reg..whi|ch is in|
|00001550| 61 63 74 69 76 65 20 28 | 7a 65 72 6f 20 72 65 66 |active (|zero ref|
|00001560| 63 6e 74 29 20 62 75 74 | 20 77 69 74 68 20 61 20 |cnt) but| with a |
|00001570| 76 61 6c 69 64 20 76 61 | 6c 75 65 2c 20 6f 72 20 |valid va|lue, or |
|00001580| 77 65 0d 09 63 61 6e 20 | 73 70 69 6c 6c 20 73 6f |we..can |spill so|
|00001590| 6d 65 20 6f 66 20 74 68 | 65 20 73 74 61 63 6b 20 |me of th|e stack |
|000015a0| 74 6f 20 6d 65 6d 6f 72 | 79 20 77 68 69 63 68 20 |to memor|y which |
|000015b0| 77 69 6c 6c 20 66 72 65 | 65 20 61 63 74 69 76 65 |will fre|e active|
|000015c0| 0d 09 72 65 67 73 2e 20 | 20 57 65 20 75 73 65 64 |..regs. | We used|
|000015d0| 20 74 6f 20 74 72 79 20 | 74 6f 20 6b 65 65 70 20 | to try |to keep |
|000015e0| 61 74 20 6c 65 61 73 74 | 20 33 20 72 65 63 65 6e |at least| 3 recen|
|000015f0| 74 6c 79 20 63 6f 6d 70 | 75 74 65 64 0d 09 76 61 |tly comp|uted..va|
|00001600| 6c 75 65 73 2c 20 61 6e | 64 20 73 6f 20 73 70 69 |lues, an|d so spi|
|00001610| 6c 6c 65 64 20 69 66 20 | 74 68 65 72 65 20 77 65 |lled if |there we|
|00001620| 72 65 20 33 20 6f 72 20 | 6c 65 73 73 20 69 6e 61 |re 3 or |less ina|
|00001630| 63 74 69 76 65 20 72 65 | 67 73 2e 0d 09 42 75 74 |ctive re|gs...But|
|00001640| 20 74 68 69 73 20 77 61 | 73 20 64 69 73 61 73 74 | this wa|s disast|
|00001650| 72 6f 75 73 20 69 66 20 | 77 65 20 77 65 72 65 20 |rous if |we were |
|00001660| 64 6f 69 6e 67 20 61 6e | 20 65 71 75 61 6c 69 7a |doing an| equaliz|
|00001670| 61 74 69 6f 6e 2c 20 61 | 6e 64 0d 09 61 6e 79 77 |ation, a|nd..anyw|
|00001680| 61 79 20 61 20 73 70 69 | 6c 6c 20 73 68 6f 75 6c |ay a spi|ll shoul|
|00001690| 64 20 70 72 6f 62 61 62 | 6c 79 20 62 65 20 61 20 |d probab|ly be a |
|000016a0| 6c 61 73 74 20 72 65 73 | 6f 72 74 20 74 68 69 6e |last res|ort thin|
|000016b0| 67 20 61 6e 79 77 61 79 | 2e 0d 09 53 6f 20 6e 6f |g anyway|...So no|
|000016c0| 77 20 77 65 20 6f 6e 6c | 79 20 73 70 69 6c 6c 20 |w we onl|y spill |
|000016d0| 69 66 20 77 65 27 72 65 | 20 72 69 67 68 74 20 6f |if we're| right o|
|000016e0| 75 74 20 6f 66 20 72 65 | 67 73 2e 0d 09 0d 09 4e |ut of re|gs.....N|
|000016f0| 6f 74 65 2c 20 74 68 61 | 74 20 6f 6e 65 20 74 68 |ote, tha|t one th|
|00001700| 69 6e 67 20 74 68 61 74 | 27 73 20 74 65 6d 70 74 |ing that|'s tempt|
|00001710| 69 6e 67 20 74 6f 20 64 | 6f 20 69 73 20 63 61 6c |ing to d|o is cal|
|00001720| 6c 20 75 70 64 61 74 65 | 5f 72 65 66 63 6e 74 73 |l update|_refcnts|
|00001730| 0d 09 69 6e 20 63 61 73 | 65 20 74 68 65 72 65 27 |..in cas|e there'|
|00001740| 73 20 61 20 72 65 67 20 | 74 68 61 74 27 73 20 61 |s a reg |that's a|
|00001750| 70 70 61 72 65 6e 74 6c | 79 20 72 65 66 65 72 65 |pparentl|y refere|
|00001760| 6e 63 65 64 20 62 75 74 | 20 72 65 61 6c 6c 79 20 |nced but| really |
|00001770| 69 73 6e 27 74 2e 0d 09 | 54 68 69 73 20 63 61 6e |isn't...|This can|
|00001780| 20 68 61 70 70 65 6e 2e | 20 20 42 75 74 20 69 74 | happen.| But it|
|00001790| 27 73 20 6e 6f 74 20 73 | 61 66 65 20 74 6f 20 63 |'s not s|afe to c|
|000017a0| 61 6c 6c 20 75 70 64 61 | 74 65 5f 72 65 66 63 6e |all upda|te_refcn|
|000017b0| 74 73 20 68 65 72 65 2c | 20 73 69 6e 63 65 0d 09 |ts here,| since..|
|000017c0| 77 65 20 63 61 6e 20 62 | 65 20 69 6e 20 74 68 65 |we can b|e in the|
|000017d0| 20 6d 69 64 64 6c 65 20 | 6f 66 20 64 6f 69 6e 67 | middle |of doing|
|000017e0| 20 6a 75 73 74 20 61 62 | 6f 75 74 20 61 6e 79 74 | just ab|out anyt|
|000017f0| 68 69 6e 67 20 77 68 65 | 6e 20 77 65 20 6e 65 65 |hing whe|n we nee|
|00001800| 64 20 61 0d 09 66 72 65 | 65 20 72 65 67 2e 20 20 |d a..fre|e reg. |
|00001810| 57 65 20 6d 69 67 68 74 | 20 68 61 76 65 20 67 72 |We might| have gr|
|00001820| 61 62 62 65 64 20 61 6e | 20 6f 70 65 72 61 6e 64 |abbed an| operand|
|00001830| 20 6f 72 20 74 77 6f 20 | 69 6e 74 6f 20 6f 70 6e | or two |into opn|
|00001840| 64 31 2c 20 6f 70 6e 64 | 32 0d 09 6f 72 20 72 65 |d1, opnd|2..or re|
|00001850| 73 31 2c 20 61 6e 64 20 | 6e 6f 20 6c 6f 6e 67 65 |s1, and |no longe|
|00001860| 72 20 68 61 76 65 20 61 | 20 72 65 66 65 72 65 6e |r have a| referen|
|00001870| 63 65 20 69 6e 20 63 73 | 74 6b 2c 20 77 68 69 63 |ce in cs|tk, whic|
|00001880| 68 20 77 6f 75 6c 64 20 | 6c 65 61 64 0d 09 74 6f |h would |lead..to|
|00001890| 20 75 73 20 67 72 61 62 | 62 69 6e 67 20 61 20 72 | us grab|bing a r|
|000018a0| 65 67 20 74 68 61 74 27 | 73 20 69 6e 20 75 73 65 |eg that'|s in use|
|000018b0| 2e 20 20 57 65 20 6d 75 | 73 74 20 6f 6e 6c 79 20 |. We mu|st only |
|000018c0| 63 61 6c 6c 20 75 70 64 | 61 74 65 5f 72 65 66 63 |call upd|ate_refc|
|000018d0| 6e 74 73 0d 09 61 74 20 | 70 6c 61 63 65 73 20 77 |nts..at |places w|
|000018e0| 68 65 72 65 20 77 65 20 | 6b 6e 6f 77 20 69 74 27 |here we |know it'|
|000018f0| 73 20 73 61 66 65 2e 20 | 20 53 6f 20 69 66 20 77 |s safe. | So if w|
|00001900| 65 20 65 6e 64 20 75 70 | 20 73 70 69 6c 6c 69 6e |e end up| spillin|
|00001910| 67 20 72 65 67 73 20 77 | 68 65 6e 0d 09 6f 6e 65 |g regs w|hen..one|
|00001920| 20 77 61 73 20 72 65 61 | 6c 6c 79 20 66 72 65 65 | was rea|lly free|
|00001930| 20 61 6c 72 65 61 64 79 | 2c 20 74 68 61 74 27 73 | already|, that's|
|00001940| 20 6a 75 73 74 20 62 61 | 64 20 6c 75 63 6b 2e 0d | just ba|d luck..|
|00001950| 2a 29 0d 0d 0d 3a 6d 20 | 47 45 54 46 52 45 45 52 |*)...:m |GETFREER|
|00001960| 45 47 3a 20 20 7b 20 5c | 20 66 6f 75 6e 64 3f 20 |EG: { \| found? |
|00001970| 72 65 67 23 20 23 69 6e | 41 63 74 69 76 65 20 65 |reg# #in|Active e|
|00001980| 61 72 6c 69 65 73 74 49 | 6e 61 63 74 69 76 65 20 |arliestI|nactive |
|00001990| 69 6e 61 63 74 69 76 65 | 43 44 50 0d 09 09 09 09 |inactive|CDP.....|
|000019a0| 09 73 70 69 6c 6c 65 64 | 3f 20 2d 2d 20 72 65 67 |.spilled|? -- reg|
|000019b0| 23 20 7d 0d 0d 09 66 61 | 6c 73 65 20 2d 3e 20 66 |# }...fa|lse -> f|
|000019c0| 6f 75 6e 64 3f 20 20 66 | 61 6c 73 65 20 2d 3e 20 |ound? f|alse -> |
|000019d0| 73 70 69 6c 6c 65 64 3f | 0d 09 30 20 2d 3e 20 23 |spilled?|..0 -> #|
|000019e0| 69 6e 41 63 74 69 76 65 | 20 20 30 20 2d 3e 20 65 |inActive| 0 -> e|
|000019f0| 61 72 6c 69 65 73 74 49 | 6e 61 63 74 69 76 65 20 |arliestI|nactive |
|00001a00| 20 2d 31 20 2d 3e 20 69 | 6e 61 63 74 69 76 65 43 | -1 -> i|nactiveC|
|00001a10| 44 50 0d 0d 09 42 45 47 | 49 4e 09 09 09 5c 20 77 |DP...BEG|IN...\ w|
|00001a20| 69 6c 6c 20 6c 6f 6f 70 | 20 69 66 20 74 68 65 72 |ill loop| if ther|
|00001a30| 65 20 61 72 65 20 6e 6f | 20 66 72 65 65 20 72 65 |e are no| free re|
|00001a40| 67 73 20 61 6e 64 20 77 | 65 20 68 61 76 65 20 74 |gs and w|e have t|
|00001a50| 6f 20 73 70 69 6c 6c 0d | 0d 09 5c 20 66 69 72 73 |o spill.|..\ firs|
|00001a60| 74 20 77 65 20 74 72 79 | 20 74 6f 20 66 69 6e 64 |t we try| to find|
|00001a70| 20 61 20 63 6f 6d 70 6c | 65 74 65 6c 79 20 75 6e | a compl|etely un|
|00001a80| 75 73 65 64 20 72 65 67 | 3a 0d 09 09 67 65 74 3a |used reg|:...get:|
|00001a90| 20 61 6c 6c 6f 63 5f 6c | 69 6d 69 74 20 31 2b 20 | alloc_l|imit 1+ |
|00001aa0| 30 0d 09 09 44 4f 09 69 | 20 73 65 6c 65 63 74 3a |0...DO.i| select:|
|00001ab0| 20 73 65 6c 66 0d 09 09 | 09 69 73 5f 72 65 67 5f | self...|.is_reg_|
|00001ac0| 75 6e 75 73 65 64 3f 3a | 20 73 65 6c 66 0d 09 09 |unused?:| self...|
|00001ad0| 09 49 46 0d 09 09 09 09 | 64 65 62 75 67 3f 20 69 |.IF.....|debug? i|
|00001ae0| 66 0d 09 09 09 09 09 2e | 22 20 61 6c 6c 6f 63 61 |f.......|" alloca|
|00001af0| 74 69 6e 67 20 65 6d 70 | 74 79 20 72 65 67 20 22 |ting emp|ty reg "|
|00001b00| 20 69 20 2e 20 63 72 0d | 09 09 09 09 74 68 65 6e | i . cr.|....then|
|00001b10| 0d 09 09 09 09 63 6c 65 | 61 72 3a 20 73 65 6c 66 |.....cle|ar: self|
|00001b20| 20 20 61 6c 6c 6f 63 61 | 74 65 3a 20 73 65 6c 66 | alloca|te: self|
|00001b30| 0d 09 09 09 09 69 20 20 | 55 4e 4c 4f 4f 50 20 20 |.....i |UNLOOP |
|00001b40| 45 58 49 54 0d 09 09 09 | 54 48 45 4e 0d 09 09 09 |EXIT....|THEN....|
|00001b50| 67 65 74 3a 20 72 65 66 | 43 6e 74 0d 09 09 09 4e |get: ref|Cnt....N|
|00001b60| 49 46 09 31 20 2b 2b 3e | 20 23 69 6e 41 63 74 69 |IF.1 ++>| #inActi|
|00001b70| 76 65 0d 09 09 09 09 67 | 65 74 3a 20 6c 61 73 74 |ve.....g|et: last|
|00001b80| 52 65 66 43 44 50 20 69 | 6e 61 63 74 69 76 65 43 |RefCDP i|nactiveC|
|00001b90| 44 50 20 75 3c 0d 09 09 | 09 09 49 46 09 67 65 74 |DP u<...|..IF.get|
|00001ba0| 3a 20 6c 61 73 74 52 65 | 66 43 44 50 20 2d 3e 20 |: lastRe|fCDP -> |
|00001bb0| 69 6e 61 63 74 69 76 65 | 43 44 50 0d 09 09 09 09 |inactive|CDP.....|
|00001bc0| 09 69 20 2d 3e 20 65 61 | 72 6c 69 65 73 74 49 6e |.i -> ea|rliestIn|
|00001bd0| 61 63 74 69 76 65 0d 09 | 09 09 09 54 48 45 4e 0d |active..|...THEN.|
|00001be0| 09 09 09 54 48 45 4e 0d | 09 09 4c 4f 4f 50 0d 0d |...THEN.|..LOOP..|
|00001bf0| 5c 20 6e 6f 74 20 66 6f | 75 6e 64 20 79 65 74 2e |\ not fo|und yet.|
|00001c00| 20 20 57 65 20 6e 6f 77 | 20 6c 6f 6f 6b 20 66 6f | We now| look fo|
|00001c10| 72 20 61 6e 20 69 6e 61 | 63 74 69 76 65 20 72 65 |r an ina|ctive re|
|00001c20| 67 2e 0d 09 09 23 69 6e | 61 63 74 69 76 65 20 30 |g....#in|active 0|
|00001c30| 3e 0d 09 09 49 46 0d 09 | 09 09 65 61 72 6c 69 65 |>...IF..|..earlie|
|00001c40| 73 74 49 6e 61 63 74 69 | 76 65 20 73 65 6c 65 63 |stInacti|ve selec|
|00001c50| 74 3a 20 73 65 6c 66 0d | 09 09 09 64 65 62 75 67 |t: self.|...debug|
|00001c60| 3f 20 69 66 0d 09 09 09 | 09 2e 22 20 61 6c 6c 6f |? if....|.." allo|
|00001c70| 63 61 74 69 6e 67 20 69 | 6e 61 63 74 69 76 65 20 |cating i|nactive |
|00001c80| 72 65 67 20 22 20 70 72 | 69 6e 74 3a 20 6d 79 52 |reg " pr|int: myR|
|00001c90| 65 66 20 63 72 0d 09 09 | 09 74 68 65 6e 0d 09 09 |ef cr...|.then...|
|00001ca0| 09 63 6c 65 61 72 3a 20 | 73 65 6c 66 20 20 61 6c |.clear: |self al|
|00001cb0| 6c 6f 63 61 74 65 3a 20 | 73 65 6c 66 0d 09 09 09 |locate: |self....|
|00001cc0| 65 61 72 6c 69 65 73 74 | 49 6e 61 63 74 69 76 65 |earliest|Inactive|
|00001cd0| 20 20 45 58 49 54 0d 09 | 09 54 48 45 4e 0d 09 09 | EXIT..|.THEN...|
|00001ce0| 0d 5c 20 73 74 69 6c 6c | 20 6e 6f 6e 65 20 66 6f |.\ still| none fo|
|00001cf0| 75 6e 64 2e 20 20 57 65 | 20 6e 6f 77 20 73 70 69 |und. We| now spi|
|00001d00| 6c 6c 20 74 6f 20 66 72 | 65 65 20 75 70 20 73 6f |ll to fr|ee up so|
|00001d10| 6d 65 20 72 65 67 73 2e | 20 20 49 66 20 77 65 27 |me regs.| If we'|
|00001d20| 76 65 0d 5c 20 20 61 6c | 72 65 61 64 79 20 73 70 |ve.\ al|ready sp|
|00001d30| 69 6c 6c 65 64 2c 20 77 | 65 27 76 65 20 67 6f 74 |illed, w|e've got|
|00001d40| 20 70 72 6f 62 6c 65 6d | 73 2e 20 20 48 6f 70 65 | problem|s. Hope|
|00001d50| 66 75 6c 6c 79 20 74 68 | 69 73 20 73 68 6f 75 6c |fully th|is shoul|
|00001d60| 64 6e 27 74 0d 5c 20 20 | 68 61 70 70 65 6e 2e 0d |dn't.\ |happen..|
|00001d70| 0d 09 09 73 70 69 6c 6c | 65 64 3f 20 4e 49 46 20 |...spill|ed? NIF |
|00001d80| 20 73 65 6c 66 20 2d 3e | 20 73 70 69 6c 6c 4f 44 | self ->| spillOD|
|00001d90| 73 20 20 73 70 69 6c 6c | 20 20 45 4c 53 45 20 20 |s spill| ELSE |
|00001da0| 32 31 31 20 64 69 65 20 | 20 54 48 45 4e 0d 0d 09 |211 die | THEN...|
|00001db0| 41 47 41 49 4e 0d 3b 6d | 0d 0d 0d 3a 6d 20 41 4c |AGAIN.;m|...:m AL|
|00001dc0| 4c 4f 43 41 54 45 5f 52 | 45 47 3a 09 5c 20 28 20 |LOCATE_R|EG:.\ ( |
|00001dd0| 72 65 67 23 20 2d 2d 20 | 29 0d 09 73 65 6c 65 63 |reg# -- |)..selec|
|00001de0| 74 3a 20 73 65 6c 66 20 | 20 61 6c 6c 6f 63 61 74 |t: self | allocat|
|00001df0| 65 3a 20 73 65 6c 66 20 | 20 3b 6d 0d 0d 3a 6d 20 |e: self | ;m..:m |
|00001e00| 46 52 45 45 5f 52 45 47 | 3a 09 09 5c 20 28 20 72 |FREE_REG|:..\ ( r|
|00001e10| 65 67 23 20 2d 2d 20 29 | 0d 09 73 65 6c 65 63 74 |eg# -- )|..select|
|00001e20| 3a 20 73 65 6c 66 20 20 | 66 72 65 65 3a 20 73 65 |: self |free: se|
|00001e30| 6c 66 20 20 3b 6d 0d 0d | 3a 6d 20 3f 44 45 4c 45 |lf ;m..|:m ?DELE|
|00001e40| 54 45 5f 52 45 47 3a 09 | 09 5c 20 28 20 72 65 67 |TE_REG:.|.\ ( reg|
|00001e50| 23 20 2d 2d 20 29 0d 09 | 73 65 6c 65 63 74 3a 20 |# -- )..|select: |
|00001e60| 73 65 6c 66 20 20 3f 64 | 65 6c 65 74 65 3a 20 73 |self ?d|elete: s|
|00001e70| 65 6c 66 20 20 3b 6d 0d | 0d 0d 3a 6d 20 4d 41 54 |elf ;m.|..:m MAT|
|00001e80| 43 48 3f 3a 20 20 7b 20 | 5e 4f 44 20 63 61 6e 42 |CH?: { |^OD canB|
|00001e90| 65 53 70 65 63 69 61 6c | 3f 20 5c 20 73 76 43 75 |eSpecial|? \ svCu|
|00001ea0| 72 72 65 6e 74 20 2d 2d | 20 62 20 7d 0d 09 67 65 |rrent --| b }..ge|
|00001eb0| 74 3a 20 63 75 72 72 65 | 6e 74 20 2d 3e 20 73 76 |t: curre|nt -> sv|
|00001ec0| 43 75 72 72 65 6e 74 0d | 09 6c 69 6d 69 74 20 30 |Current.|.limit 0|
|00001ed0| 0d 09 44 4f 09 69 20 73 | 65 6c 65 63 74 3a 20 73 |..DO.i s|elect: s|
|00001ee0| 65 6c 66 0d 09 09 67 65 | 74 3a 20 73 70 65 63 69 |elf...ge|t: speci|
|00001ef0| 61 6c 3f 0d 09 09 49 46 | 09 09 63 61 6e 42 65 53 |al?...IF|..canBeS|
|00001f00| 70 65 63 69 61 6c 3f 0d | 09 09 45 4c 53 45 09 74 |pecial?.|..ELSE.t|
|00001f10| 72 75 65 0d 09 09 54 48 | 45 4e 0d 09 09 49 46 09 |rue...TH|EN...IF.|
|00001f20| 5e 4f 44 20 20 3d 3f 3a | 20 73 65 6c 66 0d 09 09 |^OD =?:| self...|
|00001f30| 09 49 46 20 20 09 09 5c | 20 65 71 75 61 6c 2c 20 |.IF ..\| equal, |
|00001f40| 62 75 74 20 6e 65 65 64 | 20 74 6f 20 63 68 65 63 |but need| to chec|
|00001f50| 6b 20 6c 69 6d 69 74 20 | 6f 6e 20 76 61 6c 69 64 |k limit |on valid|
|00001f60| 69 74 79 0d 09 09 09 09 | 43 44 50 20 20 67 65 74 |ity.....|CDP get|
|00001f70| 3a 20 76 61 6c 69 64 54 | 69 6c 6c 43 44 50 20 20 |: validT|illCDP |
|00001f80| 75 3c 0d 09 09 09 09 49 | 46 20 20 75 6e 6c 6f 6f |u<.....I|F unloo|
|00001f90| 70 20 20 74 72 75 65 0d | 09 09 09 09 09 64 65 62 |p true.|.....deb|
|00001fa0| 75 67 3f 20 69 66 0d 09 | 09 09 09 09 09 2e 22 20 |ug? if..|......" |
|00001fb0| 6d 61 74 63 68 3f 3a 20 | 6d 61 74 63 68 65 64 20 |match?: |matched |
|00001fc0| 6f 6e 20 74 68 69 73 20 | 72 65 67 3a 20 22 20 70 |on this |reg: " p|
|00001fd0| 72 69 6e 74 3a 20 6d 79 | 52 65 66 20 63 72 0d 09 |rint: my|Ref cr..|
|00001fe0| 09 09 09 09 74 68 65 6e | 0d 09 09 09 09 09 45 58 |....then|......EX|
|00001ff0| 49 54 0d 09 09 09 09 54 | 48 45 4e 0d 09 09 09 54 |IT.....T|HEN....T|
|00002000| 48 45 4e 0d 09 09 54 48 | 45 4e 0d 09 4c 4f 4f 50 |HEN...TH|EN..LOOP|
|00002010| 0d 09 73 76 43 75 72 72 | 65 6e 74 20 20 73 65 6c |..svCurr|ent sel|
|00002020| 65 63 74 3a 20 73 65 6c | 66 0d 09 66 61 6c 73 65 |ect: sel|f..false|
|00002030| 0d 3b 6d 0d 0d 0d 3a 6d | 20 63 6c 65 61 72 41 6c |.;m...:m| clearAl|
|00002040| 6c 3a 0d 09 6c 69 6d 69 | 74 20 30 0d 09 44 4f 09 |l:..limi|t 0..DO.|
|00002050| 69 20 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 20 20 |i select|: self |
|00002060| 66 75 6c 6c 5f 63 6c 65 | 61 72 3a 20 73 65 6c 66 |full_cle|ar: self|
|00002070| 0d 09 09 2d 31 20 70 75 | 74 3a 20 6c 61 73 74 5f |...-1 pu|t: last_|
|00002080| 61 6c 6c 6f 63 61 74 65 | 64 0d 09 4c 4f 4f 50 0d |allocate|d..LOOP.|
|00002090| 3b 6d 0d 0d 3a 6d 20 63 | 6c 65 61 72 41 6c 6c 57 |;m..:m c|learAllW|
|000020a0| 69 74 68 42 6f 75 6e 64 | 61 72 79 3a 20 20 7b 20 |ithBound|ary: { |
|000020b0| 62 64 72 79 20 2d 2d 20 | 7d 0d 09 09 5c 20 63 61 |bdry -- |}...\ ca|
|000020c0| 6c 6c 65 64 20 77 68 65 | 6e 20 77 65 20 64 6f 6e |lled whe|n we don|
|000020d0| 27 74 20 77 61 6e 74 20 | 61 20 66 75 6c 6c 20 63 |'t want |a full c|
|000020e0| 6c 65 61 72 20 6f 6e 20 | 74 68 65 20 6e 6f 6e 2d |lear on |the non-|
|000020f0| 76 6f 6c 61 74 69 6c 65 | 20 72 65 67 73 2e 0d 09 |volatile| regs...|
|00002100| 6c 69 6d 69 74 20 30 0d | 09 44 4f 09 69 20 73 65 |limit 0.|.DO.i se|
|00002110| 6c 65 63 74 3a 20 73 65 | 6c 66 0d 09 09 69 20 62 |lect: se|lf...i b|
|00002120| 64 72 79 20 3c 20 49 46 | 20 20 66 75 6c 6c 5f 63 |dry < IF| full_c|
|00002130| 6c 65 61 72 3a 20 73 65 | 6c 66 20 20 45 4c 53 45 |lear: se|lf ELSE|
|00002140| 20 20 63 6c 65 61 72 3a | 20 73 65 6c 66 20 20 54 | clear:| self T|
|00002150| 48 45 4e 0d 09 09 2d 31 | 20 70 75 74 3a 20 6c 61 |HEN...-1| put: la|
|00002160| 73 74 5f 61 6c 6c 6f 63 | 61 74 65 64 0d 09 4c 4f |st_alloc|ated..LO|
|00002170| 4f 50 0d 3b 6d 0d 0d 3a | 6d 20 49 4e 56 41 4c 49 |OP.;m..:|m INVALI|
|00002180| 44 41 54 45 5f 41 4c 4c | 3a 09 09 5c 20 77 68 65 |DATE_ALL|:..\ whe|
|00002190| 6e 20 77 65 20 6a 75 73 | 74 20 6e 65 65 64 20 74 |n we jus|t need t|
|000021a0| 6f 20 69 6e 76 61 6c 69 | 64 61 74 65 2c 20 6e 6f |o invali|date, no|
|000021b0| 74 20 63 6f 6d 70 6c 65 | 74 65 6c 79 20 63 6c 65 |t comple|tely cle|
|000021c0| 61 72 0d 09 6c 69 6d 69 | 74 20 30 0d 09 44 4f 09 |ar..limi|t 0..DO.|
|000021d0| 69 20 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 20 20 |i select|: self |
|000021e0| 63 6c 65 61 72 3a 20 6f | 70 54 79 70 65 0d 09 4c |clear: o|pType..L|
|000021f0| 4f 4f 50 0d 3b 6d 0d 0d | 0d 3a 6d 20 43 4c 45 41 |OOP.;m..|.:m CLEA|
|00002200| 52 5f 52 45 46 43 4e 54 | 53 3a 09 09 5c 20 63 61 |R_REFCNT|S:..\ ca|
|00002210| 6c 6c 65 64 20 66 72 6f | 6d 20 75 70 64 61 74 65 |lled fro|m update|
|00002220| 5f 72 65 66 63 6e 74 73 | 20 2d 20 73 65 65 20 63 |_refcnts| - see c|
|00002230| 6f 6d 6d 65 6e 74 20 74 | 68 65 72 65 2e 0d 09 67 |omment t|here...g|
|00002240| 65 74 3a 20 63 75 72 72 | 65 6e 74 0d 09 67 65 74 |et: curr|ent..get|
|00002250| 3a 20 61 6c 6c 6f 63 5f | 6c 69 6d 69 74 20 30 0d |: alloc_|limit 0.|
|00002260| 09 44 4f 09 69 20 73 65 | 6c 65 63 74 3a 20 73 65 |.DO.i se|lect: se|
|00002270| 6c 66 20 20 63 6c 65 61 | 72 3a 20 72 65 66 43 6e |lf clea|r: refCn|
|00002280| 74 0d 09 4c 4f 4f 50 0d | 09 73 65 6c 65 63 74 3a |t..LOOP.|.select:|
|00002290| 20 73 65 6c 66 0d 3b 6d | 0d 0d 0d 5c 20 55 50 44 | self.;m|...\ UPD|
|000022a0| 41 54 45 5f 41 4c 4c 5f | 52 45 46 53 3a 20 72 65 |ATE_ALL_|REFS: re|
|000022b0| 70 6c 61 63 65 73 20 61 | 6c 6c 20 6f 63 63 75 72 |places a|ll occur|
|000022c0| 72 65 6e 63 65 73 20 6f | 66 20 6f 6c 64 52 65 66 |rences o|f oldRef|
|000022d0| 20 62 79 20 6e 65 77 52 | 65 66 20 69 6e 0d 5c 20 | by newR|ef in.\ |
|000022e0| 74 68 65 20 4f 44 20 61 | 72 72 61 79 2e 20 20 55 |the OD a|rray. U|
|000022f0| 73 65 64 20 77 68 65 6e | 20 77 65 27 76 65 20 6d |sed when| we've m|
|00002300| 6f 76 65 64 20 61 20 72 | 65 67 69 73 74 65 72 2e |oved a r|egister.|
|00002310| 0d 0d 3a 6d 20 55 50 44 | 41 54 45 5f 41 4c 4c 5f |..:m UPD|ATE_ALL_|
|00002320| 52 45 46 53 3a 20 20 7b | 20 5e 6f 6c 64 52 65 66 |REFS: {| ^oldRef|
|00002330| 20 5e 6e 65 77 52 65 66 | 20 66 72 6f 6d 43 44 50 | ^newRef| fromCDP|
|00002340| 20 2d 2d 20 7d 0d 09 67 | 65 74 3a 20 63 75 72 72 | -- }..g|et: curr|
|00002350| 65 6e 74 0d 09 6c 69 6d | 69 74 20 30 0d 09 44 4f |ent..lim|it 0..DO|
|00002360| 09 69 20 73 65 6c 65 63 | 74 3a 20 73 65 6c 66 20 |.i selec|t: self |
|00002370| 20 5e 6f 6c 64 52 65 66 | 20 5e 6e 65 77 52 65 66 | ^oldRef| ^newRef|
|00002380| 20 66 72 6f 6d 43 44 50 | 20 20 75 70 64 61 74 65 | fromCDP| update|
|00002390| 5f 72 65 66 73 3a 20 73 | 65 6c 66 0d 09 4c 4f 4f |_refs: s|elf..LOO|
|000023a0| 50 0d 09 73 65 6c 65 63 | 74 3a 20 73 65 6c 66 0d |P..selec|t: self.|
|000023b0| 3b 6d 0d 0d 5c 20 52 45 | 47 5f 43 48 41 4e 47 45 |;m..\ RE|G_CHANGE|
|000023c0| 44 3a 20 6c 6f 6f 6b 73 | 20 61 66 74 65 72 20 74 |D: looks| after t|
|000023d0| 68 65 20 73 69 74 75 61 | 74 69 6f 6e 20 77 68 65 |he situa|tion whe|
|000023e0| 72 65 20 61 20 72 65 67 | 20 69 73 20 67 65 74 74 |re a reg| is gett|
|000023f0| 69 6e 67 20 63 68 61 6e | 67 65 64 2c 0d 5c 20 73 |ing chan|ged,.\ s|
|00002400| 6f 20 66 6f 72 20 61 6e | 79 20 72 65 67 73 20 77 |o for an|y regs w|
|00002410| 68 69 63 68 20 64 65 70 | 65 6e 64 20 6f 6e 20 74 |hich dep|end on t|
|00002420| 68 65 20 63 68 61 6e 67 | 65 64 20 72 65 67 2c 20 |he chang|ed reg, |
|00002430| 77 65 20 6e 65 65 64 20 | 74 6f 20 73 65 74 20 69 |we need |to set i|
|00002440| 74 73 0d 5c 20 76 61 6c | 69 64 54 69 6c 6c 43 44 |ts.\ val|idTillCD|
|00002450| 50 20 69 76 61 72 20 74 | 6f 20 74 68 65 20 63 75 |P ivar t|o the cu|
|00002460| 72 72 65 6e 74 20 43 44 | 50 2e 0d 0d 3a 6d 20 52 |rrent CD|P...:m R|
|00002470| 45 47 5f 43 48 41 4e 47 | 45 44 3a 20 20 7b 20 5e |EG_CHANG|ED: { ^|
|00002480| 72 65 66 20 2d 2d 20 7d | 0d 09 67 65 74 3a 20 63 |ref -- }|..get: c|
|00002490| 75 72 72 65 6e 74 0d 09 | 6c 69 6d 69 74 20 30 0d |urrent..|limit 0.|
|000024a0| 09 44 4f 09 69 20 73 65 | 6c 65 63 74 3a 20 73 65 |.DO.i se|lect: se|
|000024b0| 6c 66 20 20 5e 72 65 66 | 20 3f 61 6e 74 65 63 65 |lf ^ref| ?antece|
|000024c0| 64 65 6e 74 5f 63 68 61 | 6e 67 65 64 3a 20 73 65 |dent_cha|nged: se|
|000024d0| 6c 66 0d 09 4c 4f 4f 50 | 0d 09 73 65 6c 65 63 74 |lf..LOOP|..select|
|000024e0| 3a 20 73 65 6c 66 0d 3b | 6d 0d 0d 0d 3a 6d 20 49 |: self.;|m...:m I|
|000024f0| 4e 56 41 4c 49 44 41 54 | 45 5f 4f 4e 5f 4f 56 45 |NVALIDAT|E_ON_OVE|
|00002500| 52 4c 41 50 3a 20 20 7b | 20 5e 4f 44 20 5c 20 73 |RLAP: {| ^OD \ s|
|00002510| 76 43 75 72 72 65 6e 74 | 20 2d 2d 20 7d 0d 09 67 |vCurrent| -- }..g|
|00002520| 65 74 3a 20 63 75 72 72 | 65 6e 74 20 2d 3e 20 73 |et: curr|ent -> s|
|00002530| 76 43 75 72 72 65 6e 74 | 0d 09 6c 69 6d 69 74 20 |vCurrent|..limit |
|00002540| 30 0d 09 44 4f 09 69 20 | 73 65 6c 65 63 74 3a 20 |0..DO.i |select: |
|00002550| 73 65 6c 66 0d 09 09 5e | 4f 44 20 20 6f 76 65 72 |self...^|OD over|
|00002560| 6c 61 70 3f 3a 20 73 65 | 6c 66 0d 09 09 49 46 20 |lap?: se|lf...IF |
|00002570| 20 09 09 5c 20 6f 76 65 | 72 6c 61 70 73 2c 20 62 | ..\ ove|rlaps, b|
|00002580| 75 74 20 6e 65 65 64 20 | 74 6f 20 63 68 65 63 6b |ut need |to check|
|00002590| 20 6c 69 6d 69 74 20 6f | 6e 20 76 61 6c 69 64 69 | limit o|n validi|
|000025a0| 74 79 0d 09 09 09 43 44 | 50 20 20 67 65 74 3a 20 |ty....CD|P get: |
|000025b0| 76 61 6c 69 64 54 69 6c | 6c 43 44 50 20 20 75 3c |validTil|lCDP u<|
|000025c0| 0d 09 09 09 49 46 0d 09 | 09 09 09 64 65 62 75 67 |....IF..|...debug|
|000025d0| 3f 20 69 66 0d 09 09 09 | 09 09 62 6c 69 74 3a 20 |? if....|..blit: |
|000025e0| 73 65 6c 66 20 20 2e 68 | 20 20 5e 4f 44 20 62 6c |self .h| ^OD bl|
|000025f0| 69 74 3a 20 63 6c 61 73 | 73 5f 61 73 3e 20 4f 44 |it: clas|s_as> OD|
|00002600| 20 2e 68 20 63 72 0d 09 | 09 09 09 09 2e 22 20 6f | .h cr..|....." o|
|00002610| 76 65 72 6c 61 70 3f 3a | 20 6d 61 74 63 68 65 64 |verlap?:| matched|
|00002620| 20 6f 6e 20 74 68 69 73 | 20 72 65 67 3a 20 22 20 | on this| reg: " |
|00002630| 70 72 69 6e 74 3a 20 73 | 65 6c 66 20 63 72 0d 09 |print: s|elf cr..|
|00002640| 09 09 09 09 2e 22 20 6f | 76 65 72 6c 61 70 70 69 |....." o|verlappi|
|00002650| 6e 67 20 4f 44 3a 20 22 | 20 20 70 72 69 6e 74 3a |ng OD: "| print:|
|00002660| 20 5b 20 5e 4f 44 20 5d | 20 63 72 0d 09 09 09 09 | [ ^OD ]| cr.....|
|00002670| 74 68 65 6e 0d 0d 09 09 | 09 09 43 44 50 20 34 2d |then....|..CDP 4-|
|00002680| 20 20 70 75 74 3a 20 76 | 61 6c 69 64 54 69 6c 6c | put: v|alidTill|
|00002690| 43 44 50 0d 09 09 09 09 | 6f 74 55 6e 6b 6e 6f 77 |CDP.....|otUnknow|
|000026a0| 6e 20 20 70 75 74 3a 20 | 6f 70 54 79 70 65 0d 09 |n put: |opType..|
|000026b0| 09 09 09 6e 6f 54 79 70 | 65 09 20 20 20 70 75 74 |...noTyp|e. put|
|000026c0| 3a 20 69 6e 73 74 72 6e | 54 79 70 65 0d 09 09 09 |: instrn|Type....|
|000026d0| 09 61 64 64 72 3a 20 6d | 79 52 65 66 20 20 72 65 |.addr: m|yRef re|
|000026e0| 67 5f 63 68 61 6e 67 65 | 64 3a 20 73 65 6c 66 0d |g_change|d: self.|
|000026f0| 09 09 09 54 48 45 4e 0d | 09 09 54 48 45 4e 0d 09 |...THEN.|..THEN..|
|00002700| 4c 4f 4f 50 0d 09 73 76 | 43 75 72 72 65 6e 74 20 |LOOP..sv|Current |
|00002710| 20 73 65 6c 65 63 74 3a | 20 73 65 6c 66 0d 3b 6d | select:| self.;m|
|00002720| 0d 0d 0d 3a 6d 20 55 50 | 44 41 54 45 5f 6f 70 43 |...:m UP|DATE_opC|
|00002730| 44 50 73 3a 0d 09 67 65 | 74 3a 20 63 75 72 72 65 |DPs:..ge|t: curre|
|00002740| 6e 74 0d 09 6c 69 6d 69 | 74 20 30 0d 09 44 4f 09 |nt..limi|t 0..DO.|
|00002750| 69 20 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 20 20 |i select|: self |
|00002760| 75 70 64 61 74 65 5f 6f | 70 43 44 50 3a 20 73 65 |update_o|pCDP: se|
|00002770| 6c 66 0d 09 4c 4f 4f 50 | 0d 09 73 65 6c 65 63 74 |lf..LOOP|..select|
|00002780| 3a 20 73 65 6c 66 0d 3b | 6d 0d 0d 3a 6d 20 4d 41 |: self.;|m..:m MA|
|00002790| 4b 45 5f 41 4c 54 45 52 | 45 44 5f 52 45 47 53 5f |KE_ALTER|ED_REGS_|
|000027a0| 55 4e 4b 4e 4f 57 4e 3a | 0d 09 67 65 74 3a 20 63 |UNKNOWN:|..get: c|
|000027b0| 75 72 72 65 6e 74 0d 09 | 6c 69 6d 69 74 20 30 0d |urrent..|limit 0.|
|000027c0| 09 44 4f 09 69 20 73 65 | 6c 65 63 74 3a 20 73 65 |.DO.i se|lect: se|
|000027d0| 6c 66 20 20 6d 61 6b 65 | 5f 75 6e 6b 6e 6f 77 6e |lf make|_unknown|
|000027e0| 5f 69 66 5f 61 6c 74 65 | 72 65 64 3a 20 73 65 6c |_if_alte|red: sel|
|000027f0| 66 0d 09 4c 4f 4f 50 0d | 09 73 65 6c 65 63 74 3a |f..LOOP.|.select:|
|00002800| 20 73 65 6c 66 0d 3b 6d | 0d 0d 0d 3a 6d 20 4d 41 | self.;m|...:m MA|
|00002810| 4b 45 5f 46 45 54 43 48 | 45 53 5f 55 4e 4b 4e 4f |KE_FETCH|ES_UNKNO|
|00002820| 57 4e 3a 0d 09 67 65 74 | 3a 20 63 75 72 72 65 6e |WN:..get|: curren|
|00002830| 74 0d 09 6c 69 6d 69 74 | 20 30 0d 09 44 4f 09 69 |t..limit| 0..DO.i|
|00002840| 20 73 65 6c 65 63 74 3a | 20 73 65 6c 66 20 20 6d | select:| self m|
|00002850| 61 6b 65 5f 75 6e 6b 6e | 6f 77 6e 5f 69 66 5f 66 |ake_unkn|own_if_f|
|00002860| 65 74 63 68 3a 20 73 65 | 6c 66 0d 09 4c 4f 4f 50 |etch: se|lf..LOOP|
|00002870| 0d 09 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 0d 3b |..select|: self.;|
|00002880| 6d 0d 0d 0d 3a 6d 20 3f | 48 4f 49 53 54 5f 41 4c |m...:m ?|HOIST_AL|
|00002890| 4c 3a 0d 09 67 65 74 3a | 20 63 75 72 72 65 6e 74 |L:..get:| current|
|000028a0| 0d 09 6c 69 6d 69 74 20 | 31 0d 09 44 4f 09 69 20 |..limit |1..DO.i |
|000028b0| 73 65 6c 65 63 74 3a 20 | 73 65 6c 66 20 20 3f 68 |select: |self ?h|
|000028c0| 6f 69 73 74 3a 20 73 65 | 6c 66 20 20 64 72 6f 70 |oist: se|lf drop|
|000028d0| 0d 09 4c 4f 4f 50 0d 09 | 73 65 6c 65 63 74 3a 20 |..LOOP..|select: |
|000028e0| 73 65 6c 66 0d 3b 6d 0d | 0d 0d 28 2a 20 4d 4f 56 |self.;m.|..(* MOV|
|000028f0| 45 52 45 47 3a 20 6d 6f | 76 65 73 20 61 6e 20 6f |EREG: mo|ves an o|
|00002900| 70 65 72 61 6e 64 20 66 | 72 6f 6d 20 6f 6e 65 20 |perand f|rom one |
|00002910| 72 65 67 20 74 6f 20 61 | 20 64 69 66 66 65 72 65 |reg to a| differe|
|00002920| 6e 74 20 6f 6e 65 20 2d | 20 77 65 20 6d 69 67 68 |nt one -| we migh|
|00002930| 74 20 68 61 76 65 0d 20 | 20 20 74 6f 20 64 6f 20 |t have. | to do |
|00002940| 74 68 69 73 20 77 68 65 | 6e 20 65 71 75 61 6c 69 |this whe|n equali|
|00002950| 7a 69 6e 67 20 74 68 65 | 20 73 74 61 63 6b 2c 20 |zing the| stack, |
|00002960| 66 6f 72 20 65 78 61 6d | 70 6c 65 2e 20 20 49 66 |for exam|ple. If|
|00002970| 20 70 6f 73 73 69 62 6c | 65 20 77 65 20 6a 75 73 | possibl|e we jus|
|00002980| 74 0d 20 20 20 72 65 63 | 6f 6d 70 69 6c 65 20 74 |t. rec|ompile t|
|00002990| 68 65 20 6f 70 65 72 61 | 74 69 6f 6e 20 74 68 61 |he opera|tion tha|
|000029a0| 74 20 67 65 6e 65 72 61 | 74 65 64 20 74 68 65 20 |t genera|ted the |
|000029b0| 6f 72 69 67 69 6e 61 6c | 20 72 65 73 75 6c 74 2c |original| result,|
|000029c0| 20 74 6f 20 67 65 6e 65 | 72 61 74 65 20 69 74 0d | to gene|rate it.|
|000029d0| 20 20 20 73 74 72 61 69 | 67 68 74 20 69 6e 20 74 | strai|ght in t|
|000029e0| 68 65 20 6e 65 77 20 72 | 65 67 2e 20 20 49 66 20 |he new r|eg. If |
|000029f0| 61 6c 6c 20 65 6c 73 65 | 20 66 61 69 6c 73 20 77 |all else| fails w|
|00002a00| 65 27 6c 6c 20 61 63 74 | 75 61 6c 6c 79 20 63 6f |e'll act|ually co|
|00002a10| 6d 70 69 6c 65 20 61 6e | 0d 20 20 20 69 6e 73 74 |mpile an|. inst|
|00002a20| 72 75 63 74 69 6f 6e 20 | 74 6f 20 6d 6f 76 65 20 |ruction |to move |
|00002a30| 74 68 65 20 6f 70 65 72 | 61 6e 64 2e 0d 20 20 20 |the oper|and.. |
|00002a40| 57 65 20 6c 65 61 76 65 | 20 74 68 65 20 64 65 73 |We leave| the des|
|00002a50| 74 69 6e 61 74 69 6f 6e | 20 72 65 67 69 73 74 65 |tination| registe|
|00002a60| 72 20 73 65 6c 65 63 74 | 65 64 2e 0d 2a 29 0d 0d |r select|ed..*)..|
|00002a70| 0d 3a 6d 20 52 45 47 5f | 4d 4f 56 45 44 3a 20 20 |.:m REG_|MOVED: |
|00002a80| 7b 20 6f 6c 64 23 20 72 | 65 63 6f 6d 70 69 6c 65 |{ old# r|ecompile|
|00002a90| 64 3f 20 2d 2d 20 7d 0d | 09 09 09 5c 20 68 6f 75 |d? -- }.|...\ hou|
|00002aa0| 73 65 6b 65 65 70 69 6e | 67 20 72 6f 75 74 69 6e |sekeepin|g routin|
|00002ab0| 65 20 63 61 6c 6c 65 64 | 20 61 66 74 65 72 20 61 |e called| after a|
|00002ac0| 20 6d 6f 76 65 2e 20 20 | 54 68 65 20 6e 65 77 20 | move. |The new |
|00002ad0| 72 65 67 20 69 73 20 63 | 75 72 72 65 6e 74 6c 79 |reg is c|urrently|
|00002ae0| 0d 09 09 09 5c 20 73 65 | 6c 65 63 74 65 64 2e 20 |....\ se|lected. |
|00002af0| 20 57 65 20 75 70 64 61 | 74 65 20 72 65 66 65 72 | We upda|te refer|
|00002b00| 65 6e 63 65 73 20 61 6e | 64 20 63 6c 65 61 72 20 |ences an|d clear |
|00002b10| 74 68 65 20 6f 6c 64 20 | 72 65 67 2e 0d 0d 09 64 |the old |reg....d|
|00002b20| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 72 65 |ebug? if|...." re|
|00002b30| 67 5f 6d 6f 76 65 64 3a | 20 63 61 6c 6c 65 64 20 |g_moved:| called |
|00002b40| 2d 20 64 65 73 74 3a 22 | 20 70 72 69 6e 74 3a 20 |- dest:"| print: |
|00002b50| 73 65 6c 66 0d 09 74 68 | 65 6e 0d 09 0d 09 61 64 |self..th|en....ad|
|00002b60| 64 72 3a 20 6d 79 52 65 | 66 20 20 64 75 70 20 20 |dr: myRe|f dup |
|00002b70| 2d 3e 3a 20 74 6d 70 52 | 65 66 31 20 20 2d 3e 3a |->: tmpR|ef1 ->:|
|00002b80| 20 74 6d 70 52 65 66 32 | 20 20 6f 6c 64 23 20 3e | tmpRef2| old# >|
|00002b90| 72 65 67 3a 20 74 6d 70 | 52 65 66 31 0d 09 74 6d |reg: tmp|Ref1..tm|
|00002ba0| 70 52 65 66 31 20 74 6d | 70 52 65 66 32 20 20 67 |pRef1 tm|pRef2 g|
|00002bb0| 65 74 3a 20 6f 70 43 44 | 50 20 34 2b 0d 09 63 75 |et: opCD|P 4+..cu|
|00002bc0| 72 72 65 6e 74 3a 20 73 | 65 6c 66 20 20 6f 6c 64 |rrent: s|elf old|
|00002bd0| 23 20 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 0d 09 |# select|: self..|
|00002be0| 63 6c 65 61 72 3a 20 73 | 75 70 65 72 0d 09 72 65 |clear: s|uper..re|
|00002bf0| 63 6f 6d 70 69 6c 65 64 | 3f 0d 09 49 46 09 09 72 |compiled|?..IF..r|
|00002c00| 65 66 5f 67 6f 6e 65 3a | 20 73 65 6c 66 0d 09 45 |ef_gone:| self..E|
|00002c10| 4c 53 45 09 43 44 50 20 | 34 2d 20 70 75 74 3a 20 |LSE.CDP |4- put: |
|00002c20| 6c 61 73 74 52 65 66 43 | 44 50 0d 09 54 48 45 4e |lastRefC|DP..THEN|
|00002c30| 0d 09 73 65 6c 65 63 74 | 3a 20 73 65 6c 66 0d 09 |..select|: self..|
|00002c40| 75 70 64 61 74 65 5f 72 | 65 66 73 0d 3b 6d 0d 0d |update_r|efs.;m..|
|00002c50| 0d 3a 6d 20 4d 4f 56 45 | 52 45 47 5f 42 59 5f 52 |.:m MOVE|REG_BY_R|
|00002c60| 45 43 4f 4d 50 49 4c 49 | 4e 47 3f 3a 20 20 7b 20 |ECOMPILI|NG?: { |
|00002c70| 6f 6c 64 23 20 6e 65 77 | 23 20 5c 20 71 71 71 20 |old# new|# \ qqq |
|00002c80| 2d 2d 20 72 65 63 6f 6d | 70 69 6c 65 3f 20 7d 0d |-- recom|pile? }.|
|00002c90| 09 6f 6c 64 23 20 73 65 | 6c 65 63 74 3a 20 73 65 |.old# se|lect: se|
|00002ca0| 6c 66 0d 09 61 64 64 72 | 3a 20 73 65 6c 66 20 20 |lf..addr|: self |
|00002cb0| 63 6f 70 79 4f 44 3a 20 | 74 68 65 4f 44 09 5c 20 |copyOD: |theOD.\ |
|00002cc0| 6d 6f 76 65 20 6f 6c 64 | 20 6f 70 65 72 61 6e 64 |move old| operand|
|00002cd0| 20 69 6e 74 6f 20 74 68 | 65 4f 44 20 66 6f 72 20 | into th|eOD for |
|00002ce0| 63 6f 6e 76 65 6e 69 65 | 6e 63 65 0d 09 09 09 09 |convenie|nce.....|
|00002cf0| 09 09 09 09 5c 20 20 6e | 65 65 64 20 41 4c 4c 20 |....\ n|eed ALL |
|00002d00| 69 76 61 72 73 20 75 6e | 63 68 61 6e 67 65 64 20 |ivars un|changed |
|00002d10| 69 6e 20 74 68 69 73 20 | 6d 6f 76 65 0d 09 6e 65 |in this |move..ne|
|00002d20| 77 23 20 73 65 6c 65 63 | 74 3a 20 73 65 6c 66 0d |w# selec|t: self.|
|00002d30| 0d 09 72 65 63 6f 6d 70 | 54 65 73 74 3f 20 69 66 |..recomp|Test? if|
|00002d40| 0d 09 09 2e 22 20 6d 6f | 76 65 72 65 67 5f 62 79 |...." mo|vereg_by|
|00002d50| 5f 72 65 63 6f 6d 70 69 | 6c 69 6e 67 3f 22 20 63 |_recompi|ling?" c|
|00002d60| 72 0d 09 09 2e 22 20 65 | 71 5f 62 6c 6f 63 6b 5f |r...." e|q_block_|
|00002d70| 72 65 63 6f 6d 70 69 6c | 69 6e 67 5f 6d 6f 76 65 |recompil|ing_move|
|00002d80| 3f 20 22 09 65 71 5f 62 | 6c 6f 63 6b 5f 72 65 63 |? ".eq_b|lock_rec|
|00002d90| 6f 6d 70 69 6c 69 6e 67 | 5f 6d 6f 76 65 3f 20 2e |ompiling|_move? .|
|00002da0| 20 63 72 0d 09 09 2e 22 | 20 73 6f 75 72 63 65 20 | cr...."| source |
|00002db0| 72 65 67 20 69 6e 20 74 | 68 65 4f 44 3a 22 09 70 |reg in t|heOD:".p|
|00002dc0| 72 69 6e 74 3a 20 74 68 | 65 4f 44 20 63 72 0d 09 |rint: th|eOD cr..|
|00002dd0| 09 2e 22 20 64 65 73 74 | 20 72 65 67 3a 20 20 20 |.." dest| reg: |
|00002de0| 20 20 20 20 20 20 20 20 | 22 09 70 72 69 6e 74 3a | |".print:|
|00002df0| 20 73 65 6c 66 20 20 63 | 72 0d 09 09 2e 22 20 62 | self c|r...." b|
|00002e00| 61 63 6b 73 74 6f 70 5f | 43 44 50 20 20 20 20 20 |ackstop_|CDP |
|00002e10| 20 20 20 22 09 62 61 63 | 6b 73 74 6f 70 5f 43 44 | ".bac|kstop_CD|
|00002e20| 50 20 2e 68 20 63 72 0d | 09 09 2e 22 20 62 61 73 |P .h cr.|..." bas|
|00002e30| 69 63 5f 62 6c 6f 63 6b | 5f 73 74 61 72 74 3a 20 |ic_block|_start: |
|00002e40| 20 22 09 62 61 73 69 63 | 5f 62 6c 6f 63 6b 5f 73 | ".basic|_block_s|
|00002e50| 74 61 72 74 20 2e 68 20 | 63 72 0d 09 09 2e 22 20 |tart .h |cr...." |
|00002e60| 6c 61 73 74 52 65 66 43 | 44 50 20 69 6e 20 64 65 |lastRefC|DP in de|
|00002e70| 73 74 20 20 22 09 67 65 | 74 3a 20 6c 61 73 74 52 |st ".ge|t: lastR|
|00002e80| 65 66 43 44 50 20 2e 68 | 20 63 72 0d 09 74 68 65 |efCDP .h| cr..the|
|00002e90| 6e 0d 0d 09 66 61 6c 73 | 65 0d 0d 5c 20 4e 6f 77 |n...fals|e..\ Now|
|00002ea0| 20 77 65 20 64 65 63 69 | 64 65 20 69 66 20 77 65 | we deci|de if we|
|00002eb0| 20 63 61 6e 20 68 61 6e | 64 6c 65 20 61 20 6d 6f | can han|dle a mo|
|00002ec0| 76 65 20 62 79 20 6a 75 | 73 74 20 72 65 63 6f 6d |ve by ju|st recom|
|00002ed0| 70 69 6c 69 6e 67 20 74 | 68 65 20 6f 70 2e 20 20 |piling t|he op. |
|00002ee0| 54 68 65 72 65 20 61 72 | 65 0d 5c 20 20 73 65 76 |There ar|e.\ sev|
|00002ef0| 65 72 61 6c 20 74 68 69 | 6e 67 73 20 74 6f 20 63 |eral thi|ngs to c|
|00002f00| 68 65 63 6b 2e 20 20 4e | 6f 74 65 20 77 65 20 64 |heck. N|ote we d|
|00002f10| 6f 6e 27 74 20 63 68 65 | 63 6b 20 66 65 74 63 68 |on't che|ck fetch|
|00002f20| 5f 62 61 63 6b 73 74 6f | 70 2c 20 73 69 6e 63 65 |_backsto|p, since|
|00002f30| 20 77 68 65 6e 20 77 65 | 0d 5c 20 20 72 65 63 6f | when we|.\ reco|
|00002f40| 6d 70 69 6c 65 20 61 6e | 20 6f 70 20 77 65 20 64 |mpile an| op we d|
|00002f50| 6f 6e 27 74 20 6d 6f 76 | 65 20 69 74 2c 20 73 6f |on't mov|e it, so|
|00002f60| 20 77 65 20 63 61 6e 20 | 61 73 73 75 6d 65 20 61 | we can |assume a|
|00002f70| 6e 79 20 66 65 74 63 68 | 65 73 20 61 72 65 20 76 |ny fetch|es are v|
|00002f80| 61 6c 69 64 0d 5c 20 20 | 69 6e 20 74 68 65 69 72 |alid.\ |in their|
|00002f90| 20 65 78 69 73 74 69 6e | 67 20 6c 6f 63 61 74 69 | existin|g locati|
|00002fa0| 6f 6e 2e 20 20 66 65 74 | 63 68 5f 62 61 63 6b 73 |on. fet|ch_backs|
|00002fb0| 74 6f 70 20 6f 6e 6c 79 | 20 6c 69 6d 69 74 73 20 |top only| limits |
|00002fc0| 77 68 65 72 65 20 77 65 | 20 63 61 6e 0d 5c 20 20 |where we| can.\ |
|00002fd0| 6d 6f 76 65 20 4e 45 57 | 20 66 65 74 63 68 65 73 |move NEW| fetches|
|00002fe0| 20 62 61 63 6b 20 74 6f | 2e 0d 0d 09 72 65 63 6f | back to|....reco|
|00002ff0| 6d 70 54 65 73 74 3f 0d | 09 69 66 0d 09 09 5b 20 |mpTest?.|.if...[ |
|00003000| 70 70 63 3f 20 5d 20 5b | 69 66 5d 20 64 62 67 72 |ppc? ] [|if] dbgr|
|00003010| 20 5b 74 68 65 6e 5d 0d | 09 74 68 65 6e 0d 0d 09 | [then].|.then...|
|00003020| 6d 6f 76 65 5f 62 79 5f | 72 65 63 6f 6d 70 69 6c |move_by_|recompil|
|00003030| 69 6e 67 3f 09 09 30 45 | 58 49 54 0d 09 09 09 09 |ing?..0E|XIT.....|
|00003040| 09 09 5c 20 66 6f 72 20 | 64 65 62 75 67 67 69 6e |..\ for |debuggin|
|00003050| 67 20 6f 72 20 77 68 61 | 74 65 76 65 72 2c 20 77 |g or wha|tever, w|
|00003060| 65 20 63 61 6e 20 74 75 | 72 6e 20 74 68 69 73 0d |e can tu|rn this.|
|00003070| 09 09 09 09 09 09 5c 20 | 20 6f 70 74 69 6d 69 7a |......\ | optimiz|
|00003080| 61 74 69 6f 6e 20 6f 66 | 66 0d 09 0d 09 65 71 5f |ation of|f....eq_|
|00003090| 62 6c 6f 63 6b 5f 72 65 | 63 6f 6d 70 69 6c 69 6e |block_re|compilin|
|000030a0| 67 5f 6d 6f 76 65 3f 20 | 20 3f 45 58 49 54 0d 09 |g_move? | ?EXIT..|
|000030b0| 09 09 09 09 09 5c 20 69 | 66 20 62 61 63 6b 20 65 |.....\ i|f back e|
|000030c0| 71 75 61 6c 69 7a 69 6e | 67 2c 20 77 65 27 72 65 |qualizin|g, we're|
|000030d0| 20 64 6f 69 6e 67 20 6c | 6f 77 2d 6c 65 76 65 6c | doing l|ow-level|
|000030e0| 20 74 68 69 6e 67 73 0d | 09 09 09 09 09 09 5c 20 | things.|......\ |
|000030f0| 20 77 69 74 68 20 72 65 | 67 73 20 61 6e 64 20 6d | with re|gs and m|
|00003100| 75 73 74 6e 27 74 20 74 | 72 79 20 74 6f 20 63 68 |ustn't t|ry to ch|
|00003110| 61 6e 67 65 20 61 6e 79 | 74 68 69 6e 67 2e 0d 0d |ange any|thing...|
|00003120| 5c 09 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |\.get: i|var> opT|
|00003130| 79 70 65 09 69 6e 20 74 | 68 65 4f 44 20 20 6f 74 |ype.in t|heOD ot|
|00003140| 53 74 6f 72 65 20 3d 0d | 5c 09 5b 20 70 70 63 3f |Store =.|\.[ ppc?|
|00003150| 20 6e 6f 74 20 5d 20 5b | 69 66 5d 20 64 75 70 20 | not ] [|if] dup |
|00003160| 69 66 20 64 62 20 74 68 | 65 6e 20 5b 74 68 65 6e |if db th|en [then|
|00003170| 5d 20 20 3f 45 58 49 54 | 09 09 5c 20 73 68 6f 75 |] ?EXIT|..\ shou|
|00003180| 6c 64 6e 27 74 20 68 61 | 70 70 65 6e 21 21 0d 5c |ldn't ha|ppen!!.\|
|00003190| 09 09 09 09 09 09 5c 20 | 73 74 6f 72 65 73 20 63 |......\ |stores c|
|000031a0| 61 6e 27 74 20 62 65 20 | 72 65 63 6f 6d 70 69 6c |an't be |recompil|
|000031b0| 65 64 2c 20 73 69 6e 63 | 65 20 77 65 27 76 65 20 |ed, sinc|e we've |
|000031c0| 77 69 70 65 64 20 6f 75 | 74 0d 5c 09 09 09 09 09 |wiped ou|t.\.....|
|000031d0| 09 5c 20 20 74 68 65 20 | 69 6e 66 6f 20 6f 6e 20 |.\ the |info on |
|000031e0| 77 68 61 74 20 77 65 27 | 72 65 20 73 74 6f 72 69 |what we'|re stori|
|000031f0| 6e 67 2e 0d 0d 09 67 65 | 74 3a 20 69 76 61 72 3e |ng....ge|t: ivar>|
|00003200| 20 73 70 65 63 69 61 6c | 3f 20 69 6e 20 74 68 65 | special|? in the|
|00003210| 4f 44 20 20 3f 45 58 49 | 54 0d 09 09 09 09 09 09 |OD ?EXI|T.......|
|00003220| 5c 20 63 61 6e 27 74 20 | 72 65 63 6f 6d 70 69 6c |\ can't |recompil|
|00003230| 65 20 69 66 20 74 68 65 | 20 6f 6c 64 20 72 65 67 |e if the| old reg|
|00003240| 20 69 73 20 61 20 6c 6f | 63 61 6c 20 6f 72 0d 09 | is a lo|cal or..|
|00003250| 09 09 09 09 09 5c 20 20 | 62 61 73 65 20 72 65 67 |.....\ |base reg|
|00003260| 20 6f 72 20 77 68 61 74 | 65 76 65 72 20 28 77 68 | or what|ever (wh|
|00003270| 69 63 68 20 63 61 6e 27 | 74 20 6d 6f 76 65 29 0d |ich can'|t move).|
|00003280| 0d 09 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |..get: i|var> opT|
|00003290| 79 70 65 20 69 6e 20 74 | 68 65 4f 44 20 20 6f 74 |ype in t|heOD ot|
|000032a0| 55 6e 6b 6e 6f 77 6e 43 | 6f 64 65 73 20 3c 3d 20 |UnknownC|odes <= |
|000032b0| 20 3f 45 58 49 54 0d 09 | 09 09 09 09 09 5c 20 6f | ?EXIT..|.....\ o|
|000032c0| 72 20 69 66 20 74 68 65 | 20 6f 6c 64 20 72 65 67 |r if the| old reg|
|000032d0| 20 69 73 20 65 6d 70 74 | 79 20 6f 72 20 6f 66 20 | is empt|y or of |
|000032e0| 75 6e 6b 6e 6f 77 6e 20 | 74 79 70 65 0d 09 09 09 |unknown |type....|
|000032f0| 09 09 09 5c 20 20 28 69 | 2e 65 2e 20 6e 6f 74 68 |...\ (i|.e. noth|
|00003300| 69 6e 67 20 74 6f 20 72 | 65 63 6f 6d 70 69 6c 65 |ing to r|ecompile|
|00003310| 29 0d 0d 09 67 65 74 3a | 20 69 76 61 72 3e 20 6f |)...get:| ivar> o|
|00003320| 70 43 44 50 20 69 6e 20 | 74 68 65 4f 44 20 20 62 |pCDP in |theOD b|
|00003330| 61 73 69 63 5f 62 6c 6f | 63 6b 5f 73 74 61 72 74 |asic_blo|ck_start|
|00003340| 09 75 3c 20 20 3f 45 58 | 49 54 0d 09 09 09 09 09 |.u< ?EX|IT......|
|00003350| 09 5c 20 6f 72 20 69 66 | 20 69 74 73 20 6f 70 20 |.\ or if| its op |
|00003360| 77 61 73 6e 27 74 20 69 | 6e 20 74 68 65 20 63 75 |wasn't i|n the cu|
|00003370| 72 72 65 6e 74 20 62 61 | 73 69 63 20 62 6c 6b 0d |rrent ba|sic blk.|
|00003380| 09 0d 09 67 65 74 3a 20 | 69 76 61 72 3e 20 6f 70 |...get: |ivar> op|
|00003390| 43 44 50 20 69 6e 20 74 | 68 65 4f 44 20 20 20 62 |CDP in t|heOD b|
|000033a0| 61 63 6b 73 74 6f 70 5f | 43 44 50 09 09 75 3c 20 |ackstop_|CDP..u< |
|000033b0| 20 3f 45 58 49 54 0d 09 | 09 09 09 09 09 5c 20 6f | ?EXIT..|.....\ o|
|000033c0| 72 20 69 66 20 69 74 20 | 77 6f 75 6c 64 20 62 65 |r if it |would be|
|000033d0| 20 70 61 73 74 20 74 68 | 65 20 62 61 63 6b 73 74 | past th|e backst|
|000033e0| 6f 70 0d 09 09 09 09 09 | 09 0d 5c 09 67 65 74 3a |op......|..\.get:|
|000033f0| 20 69 76 61 72 3e 20 6f | 70 54 79 70 65 20 69 6e | ivar> o|pType in|
|00003400| 20 74 68 65 4f 44 20 20 | 6f 74 46 65 74 63 68 20 | theOD |otFetch |
|00003410| 3d 0d 5c 09 49 46 09 67 | 65 74 3a 20 69 76 61 72 |=.\.IF.g|et: ivar|
|00003420| 3e 20 6f 70 43 44 50 20 | 69 6e 20 74 68 65 4f 44 |> opCDP |in theOD|
|00003430| 20 20 66 65 74 63 68 5f | 62 61 63 6b 73 74 6f 70 | fetch_|backstop|
|00003440| 09 75 3c 20 20 3f 45 58 | 49 54 20 20 54 48 45 4e |.u< ?EX|IT THEN|
|00003450| 0d 5c 09 09 09 09 09 09 | 5c 20 6f 72 20 74 68 65 |.\......|\ or the|
|00003460| 20 66 65 74 63 68 20 62 | 61 63 6b 73 74 6f 70 2c | fetch b|ackstop,|
|00003470| 20 69 66 20 69 74 27 73 | 20 61 20 66 65 74 63 68 | if it's| a fetch|
|00003480| 0d 0d 09 67 65 74 3a 20 | 6c 61 73 74 52 65 66 43 |...get: |lastRefC|
|00003490| 44 50 20 20 67 65 74 3a | 20 69 76 61 72 3e 20 6f |DP get:| ivar> o|
|000034a0| 70 43 44 50 20 69 6e 20 | 74 68 65 4f 44 20 20 75 |pCDP in |theOD u|
|000034b0| 3e 20 20 3f 45 58 49 54 | 0d 09 09 09 09 09 09 5c |> ?EXIT|.......\|
|000034c0| 20 6f 72 20 69 66 20 74 | 68 65 20 6c 61 73 74 20 | or if t|he last |
|000034d0| 72 65 66 20 74 6f 20 74 | 68 65 20 4e 45 57 20 72 |ref to t|he NEW r|
|000034e0| 65 67 20 77 61 73 20 61 | 66 74 65 72 20 74 68 65 |eg was a|fter the|
|000034f0| 20 6f 70 0d 09 09 09 09 | 09 09 5c 20 20 77 65 20 | op.....|..\ we |
|00003500| 77 61 6e 74 20 74 6f 20 | 72 65 63 6f 6d 70 69 6c |want to |recompil|
|00003510| 65 2c 20 73 69 6e 63 65 | 20 77 65 27 64 20 63 6c |e, since| we'd cl|
|00003520| 6f 62 62 65 72 20 74 68 | 61 74 20 75 73 65 2e 0d |obber th|at use..|
|00003530| 09 09 09 09 09 09 5c 20 | 6e 6f 74 65 20 77 65 20 |......\ |note we |
|00003540| 75 73 65 20 3e 2c 20 6e | 6f 74 20 3e 3d 2c 20 73 |use >, n|ot >=, s|
|00003550| 69 6e 63 65 20 69 74 27 | 73 20 4f 4b 20 69 66 20 |ince it'|s OK if |
|00003560| 74 68 65 20 69 6e 73 74 | 72 6e 0d 09 09 09 09 09 |the inst|rn......|
|00003570| 09 5c 20 20 77 65 27 72 | 65 20 72 65 63 6f 6d 70 |.\ we'r|e recomp|
|00003580| 69 6c 69 6e 67 20 75 73 | 65 73 20 69 74 73 20 6f |iling us|es its o|
|00003590| 77 6e 20 72 65 67 20 61 | 73 20 61 6e 20 6f 70 65 |wn reg a|s an ope|
|000035a0| 72 61 6e 64 2e 0d 0d 5c | 20 69 66 20 77 65 20 67 |rand...\| if we g|
|000035b0| 6f 74 20 68 65 72 65 2c | 20 69 74 27 73 20 4f 4b |ot here,| it's OK|
|000035c0| 20 74 6f 20 72 65 63 6f | 6d 70 69 6c 65 20 74 68 | to reco|mpile th|
|000035d0| 65 20 6f 70 21 0d 0d 09 | 64 72 6f 70 09 09 09 09 |e op!...|drop....|
|000035e0| 5c 20 64 72 6f 70 20 66 | 61 6c 73 65 20 66 6c 61 |\ drop f|alse fla|
|000035f0| 67 0d 0d 09 72 65 63 6f | 6d 70 54 65 73 74 3f 20 |g...reco|mpTest? |
|00003600| 69 66 0d 09 09 2e 22 20 | 6d 6f 76 69 6e 67 20 62 |if...." |moving b|
|00003610| 79 20 72 65 63 6f 6d 70 | 69 6c 69 6e 67 20 22 20 |y recomp|iling " |
|00003620| 6f 6c 64 23 20 2e 20 2e | 22 20 20 74 6f 20 22 20 |old# . .|" to " |
|00003630| 6e 65 77 23 20 2e 20 63 | 72 0d 09 74 68 65 6e 0d |new# . c|r..then.|
|00003640| 0d 09 74 68 65 4f 44 20 | 63 6f 70 79 57 69 74 68 |..theOD |copyWith|
|00003650| 43 44 50 3a 20 73 65 6c | 66 0d 09 67 65 74 3a 20 |CDP: sel|f..get: |
|00003660| 69 76 61 72 3e 20 72 65 | 66 63 6e 74 20 69 6e 20 |ivar> re|fcnt in |
|00003670| 74 68 65 4f 44 20 20 70 | 75 74 3a 20 72 65 66 63 |theOD p|ut: refc|
|00003680| 6e 74 0d 09 72 65 63 6f | 6d 70 69 6c 65 3a 20 73 |nt..reco|mpile: s|
|00003690| 65 6c 66 0d 0d 09 6f 6c | 64 23 20 6e 65 77 23 20 |elf...ol|d# new# |
|000036a0| 61 64 64 72 3a 20 6d 79 | 52 65 66 20 20 63 68 65 |addr: my|Ref che|
|000036b0| 63 6b 5f 66 6f 72 5f 6d | 6f 76 65 64 5f 73 74 6f |ck_for_m|oved_sto|
|000036c0| 72 65 73 0d 09 0d 09 6f | 6c 64 23 20 74 72 75 65 |res....o|ld# true|
|000036d0| 20 72 65 67 5f 6d 6f 76 | 65 64 3a 20 73 65 6c 66 | reg_mov|ed: self|
|000036e0| 0d 09 74 72 75 65 0d 3b | 6d 0d 0d 0d 3a 6d 20 4d |..true.;|m...:m M|
|000036f0| 4f 56 45 52 45 47 3a 20 | 20 7b 20 6f 6c 64 23 20 |OVEREG: | { old# |
|00003700| 6e 65 77 23 20 75 70 64 | 61 74 65 52 65 66 73 3f |new# upd|ateRefs?|
|00003710| 20 5c 20 65 78 74 72 61 | 52 65 66 73 3f 20 2d 2d | \ extra|Refs? --|
|00003720| 20 7d 0d 0d 09 64 65 62 | 75 67 3f 20 72 65 63 6f | }...deb|ug? reco|
|00003730| 6d 70 54 65 73 74 3f 20 | 6f 72 20 69 66 0d 09 09 |mpTest? |or if...|
|00003740| 2e 22 20 6d 6f 76 65 52 | 65 67 3a 20 63 61 6c 6c |." moveR|eg: call|
|00003750| 65 64 2c 20 74 6f 20 6d | 6f 76 65 20 22 20 6f 6c |ed, to m|ove " ol|
|00003760| 64 23 20 2e 20 2e 22 20 | 20 74 6f 20 22 20 6e 65 |d# . ." | to " ne|
|00003770| 77 23 20 2e 20 63 72 0d | 09 74 68 65 6e 0d 0d 09 |w# . cr.|.then...|
|00003780| 6e 65 77 23 20 73 65 6c | 65 63 74 3a 20 73 65 6c |new# sel|ect: sel|
|00003790| 66 0d 09 6f 6c 64 23 20 | 6e 65 77 23 20 3d 20 20 |f..old# |new# = |
|000037a0| 3f 45 58 49 54 09 09 09 | 5c 20 6a 75 73 74 20 69 |?EXIT...|\ just i|
|000037b0| 6e 20 63 61 73 65 0d 0d | 5c 20 6e 6f 77 20 77 65 |n case..|\ now we|
|000037c0| 20 6e 65 65 64 20 74 6f | 20 63 68 65 63 6b 20 69 | need to| check i|
|000037d0| 66 20 77 65 20 68 61 76 | 65 20 61 6e 79 20 65 78 |f we hav|e any ex|
|000037e0| 74 72 61 20 72 65 66 73 | 20 74 6f 20 74 68 69 73 |tra refs| to this|
|000037f0| 20 64 65 73 74 20 72 65 | 67 0d 5c 20 20 6f 6e 20 | dest re|g.\ on |
|00003800| 63 73 74 6b 2e 20 20 49 | 66 20 77 65 20 64 6f 2c |cstk. I|f we do,|
|00003810| 20 74 68 65 73 65 20 72 | 65 66 73 20 6e 65 65 64 | these r|efs need|
|00003820| 20 74 68 65 20 6f 6c 64 | 20 76 61 6c 75 65 2c 20 | the old| value, |
|00003830| 73 6f 20 77 65 27 6c 6c | 20 68 61 76 65 0d 5c 20 |so we'll| have.\ |
|00003840| 20 74 6f 20 73 61 76 65 | 20 74 68 65 20 6f 6c 64 | to save| the old|
|00003850| 20 76 61 6c 75 65 20 74 | 6f 20 61 20 6e 65 77 20 | value t|o a new |
|00003860| 72 65 67 20 62 65 66 6f | 72 65 20 77 65 20 63 68 |reg befo|re we ch|
|00003870| 61 6e 67 65 20 74 68 65 | 20 64 65 73 74 2e 0d 5c |ange the| dest..\|
|00003880| 20 4e 6f 74 65 20 74 68 | 61 74 20 77 65 20 6d 75 | Note th|at we mu|
|00003890| 73 74 6e 27 74 20 64 6f | 20 74 68 69 73 20 64 75 |stn't do| this du|
|000038a0| 72 69 6e 67 20 65 71 75 | 61 6c 69 7a 61 74 69 6f |ring equ|alizatio|
|000038b0| 6e 20 77 68 65 6e 20 77 | 65 20 70 72 65 73 75 6d |n when w|e presum|
|000038c0| 61 62 6c 79 0d 5c 20 20 | 68 61 76 65 20 65 76 65 |ably.\ |have eve|
|000038d0| 72 79 74 68 69 6e 67 20 | 75 6e 64 65 72 20 63 6f |rything |under co|
|000038e0| 6e 74 72 6f 6c 20 61 6e | 64 20 6d 75 73 74 6e 27 |ntrol an|d mustn'|
|000038f0| 74 20 74 72 79 20 74 6f | 20 73 65 63 6f 6e 64 2d |t try to| second-|
|00003900| 67 75 65 73 73 2e 0d 0d | 09 65 71 75 61 6c 69 7a |guess...|.equaliz|
|00003910| 69 6e 67 3f 0d 09 4e 49 | 46 0d 09 09 66 61 6c 73 |ing?..NI|F...fals|
|00003920| 65 20 2d 3e 20 65 78 74 | 72 61 52 65 66 73 3f 0d |e -> ext|raRefs?.|
|00003930| 09 09 73 69 7a 65 3a 20 | 63 73 74 6b 20 31 2b 20 |..size: |cstk 1+ |
|00003940| 31 0d 09 09 3f 44 4f 09 | 69 20 73 74 6b 3a 20 63 |1...?DO.|i stk: c|
|00003950| 73 74 6b 0d 09 09 09 61 | 64 64 72 3a 20 6d 79 52 |stk....a|ddr: myR|
|00003960| 65 66 20 3d 3f 3a 20 63 | 73 74 6b 0d 09 09 09 49 |ef =?: c|stk....I|
|00003970| 46 0d 09 09 09 09 64 65 | 62 75 67 3f 20 69 66 0d |F.....de|bug? if.|
|00003980| 09 09 09 09 09 2e 22 20 | 77 65 20 68 61 76 65 20 |......" |we have |
|00003990| 61 6e 6f 74 68 65 72 20 | 72 65 66 20 74 6f 20 74 |another |ref to t|
|000039a0| 68 65 20 64 65 73 74 20 | 72 65 67 2c 20 69 6e 20 |he dest |reg, in |
|000039b0| 63 65 6c 6c 20 22 20 69 | 20 2e 20 63 72 0d 09 09 |cell " i| . cr...|
|000039c0| 09 09 09 70 72 69 6e 74 | 61 6c 6c 3a 20 63 73 74 |...print|all: cst|
|000039d0| 6b 0d 09 09 09 09 74 68 | 65 6e 0d 09 09 0d 09 09 |k.....th|en......|
|000039e0| 09 09 65 78 74 72 61 52 | 65 66 73 3f 0d 09 09 09 |..extraR|efs?....|
|000039f0| 09 4e 49 46 09 09 5c 20 | 66 69 72 73 74 20 74 69 |.NIF..\ |first ti|
|00003a00| 6d 65 20 2d 20 67 65 74 | 20 74 68 65 20 6e 65 77 |me - get| the new|
|00003a10| 20 72 65 67 0d 09 09 09 | 09 09 74 72 75 65 20 2d | reg....|..true -|
|00003a20| 3e 20 65 78 74 72 61 52 | 65 66 73 3f 0d 09 09 09 |> extraR|efs?....|
|00003a30| 09 09 67 65 74 46 72 65 | 65 52 65 67 3a 20 73 65 |..getFre|eReg: se|
|00003a40| 6c 66 20 20 64 72 6f 70 | 0d 09 09 09 09 09 6e 65 |lf drop|......ne|
|00003a50| 77 23 20 63 6f 6d 70 69 | 6c 65 5f 72 65 67 5f 6d |w# compi|le_reg_m|
|00003a60| 6f 76 65 3a 20 73 65 6c | 66 0d 09 09 09 09 54 48 |ove: sel|f.....TH|
|00003a70| 45 4e 0d 09 09 09 09 61 | 64 64 72 3a 20 6d 79 52 |EN.....a|ddr: myR|
|00003a80| 65 66 20 20 2d 3e 3a 20 | 63 73 74 6b 0d 09 09 09 |ef ->: |cstk....|
|00003a90| 54 48 45 4e 0d 09 09 4c | 4f 4f 50 0d 09 54 48 45 |THEN...L|OOP..THE|
|00003aa0| 4e 0d 0d 09 6f 6c 64 23 | 20 6e 65 77 23 20 6d 6f |N...old#| new# mo|
|00003ab0| 76 65 52 65 67 5f 62 79 | 5f 72 65 63 6f 6d 70 69 |veReg_by|_recompi|
|00003ac0| 6c 69 6e 67 3f 3a 20 73 | 65 6c 66 20 20 3f 45 58 |ling?: s|elf ?EX|
|00003ad0| 49 54 0d 09 6e 65 77 23 | 20 73 65 6c 65 63 74 3a |IT..new#| select:|
|00003ae0| 20 73 65 6c 66 0d 09 6f | 6c 64 23 20 63 6f 6d 70 | self..o|ld# comp|
|00003af0| 69 6c 65 5f 72 65 67 5f | 6d 6f 76 65 3a 20 73 65 |ile_reg_|move: se|
|00003b00| 6c 66 0d 09 0d 09 64 65 | 62 75 67 3f 20 72 65 63 |lf....de|bug? rec|
|00003b10| 6f 6d 70 54 65 73 74 3f | 20 6f 72 20 69 66 0d 09 |ompTest?| or if..|
|00003b20| 09 2e 22 20 6d 6f 76 65 | 64 20 62 79 20 63 6f 6d |.." move|d by com|
|00003b30| 70 69 6c 69 6e 67 20 61 | 20 6d 6f 76 65 2c 20 66 |piling a| move, f|
|00003b40| 72 6f 6d 20 22 20 6f 6c | 64 23 20 2e 20 2e 22 20 |rom " ol|d# . ." |
|00003b50| 20 74 6f 20 22 20 6e 65 | 77 23 20 2e 20 63 72 0d | to " ne|w# . cr.|
|00003b60| 09 74 68 65 6e 0d 0d 09 | 6f 6c 64 23 20 2d 31 20 |.then...|old# -1 |
|00003b70| 20 61 64 64 72 3a 20 6d | 79 52 65 66 20 20 63 68 | addr: m|yRef ch|
|00003b80| 65 63 6b 5f 66 6f 72 5f | 6d 6f 76 65 64 5f 73 74 |eck_for_|moved_st|
|00003b90| 6f 72 65 73 0d 09 75 70 | 64 61 74 65 52 65 66 73 |ores..up|dateRefs|
|00003ba0| 3f 0d 09 49 46 09 6f 6c | 64 23 20 66 61 6c 73 65 |?..IF.ol|d# false|
|00003bb0| 20 72 65 67 5f 6d 6f 76 | 65 64 3a 20 73 65 6c 66 | reg_mov|ed: self|
|00003bc0| 0d 09 09 6e 65 77 23 20 | 73 65 6c 65 63 74 3a 20 |...new# |select: |
|00003bd0| 73 65 6c 66 0d 09 54 48 | 45 4e 0d 3b 6d 0d 0d 3a |self..TH|EN.;m..:|
|00003be0| 6d 20 69 6e 64 65 78 65 | 64 4f 70 43 44 50 3a 0d |m indexe|dOpCDP:.|
|00003bf0| 09 63 75 72 72 65 6e 74 | 3a 20 73 65 6c 66 20 3e |.current|: self >|
|00003c00| 72 0d 09 73 65 6c 65 63 | 74 3a 20 73 65 6c 66 0d |r..selec|t: self.|
|00003c10| 09 67 65 74 3a 20 70 65 | 72 6d 61 6e 65 6e 74 3f |.get: pe|rmanent?|
|00003c20| 20 49 46 20 20 31 36 20 | 20 45 4c 53 45 20 20 67 | IF 16 | ELSE g|
|00003c30| 65 74 3a 20 6f 70 43 44 | 50 20 20 54 48 45 4e 0d |et: opCD|P THEN.|
|00003c40| 09 72 3e 20 73 65 6c 65 | 63 74 3a 20 73 65 6c 66 |.r> sele|ct: self|
|00003c50| 0d 3b 6d 0d 0d 3a 6d 20 | 55 53 45 5f 54 48 49 53 |.;m..:m |USE_THIS|
|00003c60| 3a 20 20 28 20 43 44 50 | 5f 74 6f 5f 75 73 65 20 |: ( CDP|_to_use |
|00003c70| 72 65 67 23 20 2d 2d 20 | 29 0d 09 63 75 72 72 65 |reg# -- |)..curre|
|00003c80| 6e 74 3a 20 73 65 6c 66 | 20 3e 72 0d 09 73 65 6c |nt: self| >r..sel|
|00003c90| 65 63 74 3a 20 73 65 6c | 66 20 20 6d 61 72 6b 5f |ect: sel|f mark_|
|00003ca0| 75 73 65 3a 20 73 75 70 | 65 72 0d 09 72 3e 20 73 |use: sup|er..r> s|
|00003cb0| 65 6c 65 63 74 3a 20 73 | 65 6c 66 0d 3b 6d 0d 0d |elect: s|elf.;m..|
|00003cc0| 3a 6d 20 50 52 49 4e 54 | 3a 0d 09 63 72 0d 09 2e |:m PRINT|:..cr...|
|00003cd0| 22 20 63 75 72 72 65 6e | 74 3a 20 22 20 20 67 65 |" curren|t: " ge|
|00003ce0| 74 3a 20 63 75 72 72 65 | 6e 74 20 20 2e 0d 09 70 |t: curre|nt ...p|
|00003cf0| 72 69 6e 74 3a 20 73 75 | 70 65 72 0d 3b 6d 0d 0d |rint: su|per.;m..|
|00003d00| 3a 6d 20 50 52 49 4e 54 | 41 4c 4c 3a 0d 09 63 72 |:m PRINT|ALL:..cr|
|00003d10| 0d 09 2e 22 20 63 75 72 | 72 65 6e 74 3a 20 22 20 |..." cur|rent: " |
|00003d20| 20 67 65 74 3a 20 63 75 | 72 72 65 6e 74 20 20 64 | get: cu|rrent d|
|00003d30| 75 70 20 2e 20 20 63 72 | 0d 09 2e 22 20 6c 61 73 |up . cr|..." las|
|00003d40| 74 20 61 6c 6c 6f 63 61 | 74 65 64 3a 20 20 22 20 |t alloca|ted: " |
|00003d50| 70 72 69 6e 74 3a 20 6c | 61 73 74 5f 61 6c 6c 6f |print: l|ast_allo|
|00003d60| 63 61 74 65 64 20 20 63 | 72 0d 0d 09 6c 69 6d 69 |cated c|r...limi|
|00003d70| 74 20 30 0d 09 44 4f 09 | 69 20 73 65 6c 65 63 74 |t 0..DO.|i select|
|00003d80| 3a 20 73 65 6c 66 0d 09 | 09 67 65 74 3a 20 6f 70 |: self..|.get: op|
|00003d90| 54 79 70 65 0d 09 09 49 | 46 0d 09 09 09 69 20 2e |Type...I|F....i .|
|00003da0| 20 20 70 72 69 6e 74 3a | 20 73 75 70 65 72 20 20 | print:| super |
|00003db0| 63 72 0d 09 09 54 48 45 | 4e 0d 09 4c 4f 4f 50 0d |cr...THE|N..LOOP.|
|00003dc0| 09 73 65 6c 65 63 74 3a | 20 73 65 6c 66 0d 3b 6d |.select:| self.;m|
|00003dd0| 0d 0d 3a 6d 20 2e 41 4c | 4c 4f 43 41 54 45 44 3a |..:m .AL|LOCATED:|
|00003de0| 0d 09 67 65 74 3a 20 63 | 75 72 72 65 6e 74 0d 09 |..get: c|urrent..|
|00003df0| 6c 69 6d 69 74 20 30 0d | 09 44 4f 09 69 20 73 65 |limit 0.|.DO.i se|
|00003e00| 6c 65 63 74 3a 20 73 65 | 6c 66 20 20 67 65 74 3a |lect: se|lf get:|
|00003e10| 20 72 65 66 43 6e 74 0d | 09 09 49 46 20 20 69 20 | refCnt.|..IF i |
|00003e20| 2e 20 20 34 20 73 70 61 | 63 65 73 20 2e 22 20 72 |. 4 spa|ces ." r|
|00003e30| 65 66 43 6e 74 20 22 20 | 20 67 65 74 3a 20 72 65 |efCnt " | get: re|
|00003e40| 66 43 6e 74 20 2e 20 20 | 63 72 0d 09 09 54 48 45 |fCnt . |cr...THE|
|00003e50| 4e 0d 09 4c 4f 4f 50 20 | 20 63 72 0d 09 73 65 6c |N..LOOP | cr..sel|
|00003e60| 65 63 74 3a 20 73 65 6c | 66 0d 3b 6d 0d 0d 3a 6d |ect: sel|f.;m..:m|
|00003e70| 20 2e 46 52 45 45 3a 0d | 09 63 72 0d 09 67 65 74 | .FREE:.|.cr..get|
|00003e80| 3a 20 63 75 72 72 65 6e | 74 0d 09 6c 69 6d 69 74 |: curren|t..limit|
|00003e90| 20 30 0d 09 44 4f 09 69 | 20 73 65 6c 65 63 74 3a | 0..DO.i| select:|
|00003ea0| 20 73 65 6c 66 20 20 67 | 65 74 3a 20 72 65 66 43 | self g|et: refC|
|00003eb0| 6e 74 0d 09 09 4e 49 46 | 20 20 69 20 2e 20 20 63 |nt...NIF| i . c|
|00003ec0| 72 0d 09 09 54 48 45 4e | 0d 09 4c 4f 4f 50 0d 09 |r...THEN|..LOOP..|
|00003ed0| 73 65 6c 65 63 74 3a 20 | 73 65 6c 66 0d 3b 6d 0d |select: |self.;m.|
|00003ee0| 0d 3a 6d 20 49 4e 49 54 | 3a 20 20 7b 20 6d 79 52 |.:m INIT|: { myR|
|00003ef0| 65 66 54 79 70 65 20 6d | 79 5f 61 6c 6c 6f 63 5f |efType m|y_alloc_|
|00003f00| 6c 69 6d 69 74 20 2d 2d | 20 7d 0d 09 6c 69 6d 69 |limit --| }..limi|
|00003f10| 74 20 30 0d 09 44 4f 09 | 69 20 73 65 6c 65 63 74 |t 0..DO.|i select|
|00003f20| 3a 20 73 65 6c 66 0d 09 | 09 6d 79 52 65 66 54 79 |: self..|.myRefTy|
|00003f30| 70 65 20 20 3e 72 65 66 | 54 79 70 65 3a 20 6d 79 |pe >ref|Type: my|
|00003f40| 52 65 66 20 20 69 20 3e | 72 65 67 3a 20 6d 79 52 |Ref i >|reg: myR|
|00003f50| 65 66 0d 09 4c 4f 4f 50 | 0d 09 6d 79 5f 61 6c 6c |ef..LOOP|..my_all|
|00003f60| 6f 63 5f 6c 69 6d 69 74 | 20 20 70 75 74 3a 20 61 |oc_limit| put: a|
|00003f70| 6c 6c 6f 63 5f 6c 69 6d | 69 74 0d 3b 6d 0d 0d 3a |lloc_lim|it.;m..:|
|00003f80| 6d 20 43 4c 41 53 53 49 | 4e 49 54 3a 0d 09 63 6c |m CLASSI|NIT:..cl|
|00003f90| 65 61 72 61 6c 6c 3a 20 | 73 65 6c 66 0d 3b 6d 0d |earall: |self.;m.|
|00003fa0| 0d 50 50 43 3f 0d 5b 49 | 46 5d 09 09 5c 20 6d 61 |.PPC?.[I|F]..\ ma|
|00003fb0| 79 20 6e 6f 74 20 72 65 | 61 6c 6c 79 20 6e 65 65 |y not re|ally nee|
|00003fc0| 64 20 74 68 69 73 20 74 | 6f 20 62 65 20 63 6f 6e |d this t|o be con|
|00003fd0| 64 69 74 69 6f 6e 61 6c | 2c 20 62 75 74 20 49 27 |ditional|, but I'|
|00003fe0| 6d 0d 09 09 09 5c 20 20 | 63 61 75 74 69 6f 75 73 |m....\ |cautious|
|00003ff0| 2e 2e 2e 0d 0d 3a 6d 20 | 44 45 45 50 5f 43 4c 41 |.....:m |DEEP_CLA|
|00004000| 53 53 49 4e 49 54 3a 20 | 7b 20 5c 20 78 78 20 2d |SSINIT: |{ \ xx -|
|00004010| 2d 20 7d 09 5c 20 4e 65 | 65 64 20 74 68 69 73 20 |- }.\ Ne|ed this |
|00004020| 66 6f 72 20 73 65 74 74 | 69 6e 67 20 75 70 20 77 |for sett|ing up w|
|00004030| 68 65 6e 20 77 65 20 69 | 6e 69 74 69 61 6c 69 7a |hen we i|nitializ|
|00004040| 65 20 6f 66 74 65 72 0d | 09 09 09 09 09 5c 20 20 |e ofter.|.....\ |
|00004050| 74 61 72 67 65 74 20 63 | 6f 6d 70 69 6c 61 74 69 |target c|ompilati|
|00004060| 6f 6e 2c 20 73 69 6e 63 | 65 20 74 68 65 20 72 65 |on, sinc|e the re|
|00004070| 67 75 6c 61 72 20 43 4c | 41 53 53 49 4e 49 54 3a |gular CL|ASSINIT:|
|00004080| 0d 09 09 09 09 09 5c 20 | 20 64 6f 65 73 6e 27 74 |......\ | doesn't|
|00004090| 20 67 65 74 20 64 6f 6e | 65 2e 20 20 4e 65 65 64 | get don|e. Need|
|000040a0| 20 74 6f 20 6f 76 65 72 | 72 69 64 65 2c 20 6f 72 | to over|ride, or|
|000040b0| 20 69 74 20 77 69 6c 6c | 0d 09 09 09 09 09 5c 20 | it will|......\ |
|000040c0| 20 6a 75 73 74 20 63 61 | 6c 6c 20 74 68 65 20 6d | just ca|ll the m|
|000040d0| 65 74 68 6f 64 20 69 6e | 20 74 68 65 20 66 69 72 |ethod in| the fir|
|000040e0| 73 74 20 73 75 70 65 72 | 63 6c 61 73 73 20 4f 44 |st super|class OD|
|000040f0| 2e 0d 0d 09 69 64 78 42 | 61 73 65 20 34 2b 20 20 |....idxB|ase 4+ |
|00004100| 61 64 64 72 3a 20 78 64 | 69 73 70 6c 20 20 64 69 |addr: xd|ispl di|
|00004110| 73 70 6c 21 0d 09 5e 62 | 61 73 65 20 20 63 6c 61 |spl!..^b|ase cla|
|00004120| 73 73 69 6e 69 74 3a 20 | 63 6c 61 73 73 5f 61 73 |ssinit: |class_as|
|00004130| 3e 20 4f 44 09 5c 20 61 | 63 74 75 61 6c 6c 79 20 |> OD.\ a|ctually |
|00004140| 63 61 6e 20 6f 6d 69 74 | 20 6f 6e 63 65 20 69 74 |can omit| once it|
|00004150| 27 73 20 77 6f 72 6b 69 | 6e 67 0d 09 09 09 09 09 |'s worki|ng......|
|00004160| 09 09 09 09 5c 20 20 73 | 69 6e 63 65 20 69 76 53 |....\ s|ince ivS|
|00004170| 65 74 75 70 20 63 61 6c | 6c 73 20 63 6c 61 73 73 |etup cal|ls class|
|00004180| 69 6e 69 74 3a 20 6f 6e | 0d 09 09 09 09 09 09 09 |init: on|........|
|00004190| 09 09 5c 20 20 41 4c 4c | 20 73 75 70 65 72 63 6c |..\ ALL| supercl|
|000041a0| 61 73 73 65 73 2e 0d 09 | 28 5e 62 61 73 65 29 20 |asses...|(^base) |
|000041b0| 2d 3e 20 6e 65 77 4f 62 | 6a 65 63 74 0d 09 5b 27 |-> newOb|ject..['|
|000041c0| 5d 20 4f 44 73 5f 63 6c | 61 73 73 20 28 20 64 75 |] ODs_cl|ass ( du|
|000041d0| 70 20 2d 3e 20 78 78 20 | 29 20 20 69 66 61 20 64 |p -> xx |) ifa d|
|000041e0| 69 73 70 6c 61 63 65 20 | 20 30 20 20 30 0d 09 69 |isplace | 0 0..i|
|000041f0| 76 53 65 74 75 70 0d 3b | 6d 0d 0d 5b 54 48 45 4e |vSetup.;|m..[THEN|
|00004200| 5d 0d 0d 3b 63 6c 61 73 | 73 0d 0d 0d 33 32 09 4f |]..;clas|s...32.O|
|00004210| 44 73 5f 63 6c 61 73 73 | 09 47 50 52 73 09 09 09 |Ds_class|.GPRs...|
|00004220| 50 50 43 3f 20 6e 6f 74 | 20 5b 49 46 5d 20 20 67 |PPC? not| [IF] g|
|00004230| 70 72 52 65 66 20 31 30 | 20 20 69 6e 69 74 3a 20 |prRef 10| init: |
|00004240| 47 50 52 73 20 20 5b 54 | 48 45 4e 5d 0d 33 32 09 |GPRs [T|HEN].32.|
|00004250| 4f 44 73 5f 63 6c 61 73 | 73 09 46 50 52 73 09 09 |ODs_clas|s.FPRs..|
|00004260| 09 50 50 43 3f 20 6e 6f | 74 20 5b 49 46 5d 20 20 |.PPC? no|t [IF] |
|00004270| 66 70 72 52 65 66 20 31 | 33 20 20 69 6e 69 74 3a |fprRef 1|3 init:|
|00004280| 20 46 50 52 73 20 20 5b | 54 48 45 4e 5d 0d 20 38 | FPRs [|THEN]. 8|
|00004290| 09 4f 44 73 5f 63 6c 61 | 73 73 09 43 52 73 09 09 |.ODs_cla|ss.CRs..|
|000042a0| 09 09 50 50 43 3f 20 6e | 6f 74 20 5b 49 46 5d 20 |..PPC? n|ot [IF] |
|000042b0| 20 43 52 72 65 66 20 20 | 20 37 20 20 69 6e 69 74 | CRref | 7 init|
|000042c0| 3a 20 43 52 73 20 20 20 | 5b 54 48 45 4e 5d 0d 0d |: CRs |[THEN]..|
|000042d0| 33 32 09 4f 44 73 5f 63 | 6c 61 73 73 09 53 54 4f |32.ODs_c|lass.STO|
|000042e0| 52 45 44 5f 47 50 52 73 | 09 09 50 50 43 3f 20 6e |RED_GPRs|..PPC? n|
|000042f0| 6f 74 20 5b 49 46 5d 20 | 20 67 70 72 52 65 66 20 |ot [IF] | gprRef |
|00004300| 31 30 20 20 69 6e 69 74 | 3a 20 73 74 6f 72 65 64 |10 init|: stored|
|00004310| 5f 47 50 52 73 20 20 5b | 54 48 45 4e 5d 0d 33 32 |_GPRs [|THEN].32|
|00004320| 09 4f 44 73 5f 63 6c 61 | 73 73 09 53 54 4f 52 45 |.ODs_cla|ss.STORE|
|00004330| 44 5f 46 50 52 73 09 09 | 50 50 43 3f 20 6e 6f 74 |D_FPRs..|PPC? not|
|00004340| 20 5b 49 46 5d 20 20 66 | 70 72 52 65 66 20 31 30 | [IF] f|prRef 10|
|00004350| 20 20 69 6e 69 74 3a 20 | 73 74 6f 72 65 64 5f 46 | init: |stored_F|
|00004360| 50 52 73 20 20 5b 54 48 | 45 4e 5d 0d 0d 5c 20 4e |PRs [TH|EN]..\ N|
|00004370| 6f 74 65 3a 20 77 68 65 | 6e 20 74 61 72 67 65 74 |ote: whe|n target|
|00004380| 20 63 6f 6d 70 69 6c 69 | 6e 67 20 77 65 20 63 61 | compili|ng we ca|
|00004390| 6e 27 74 20 73 65 6e 64 | 20 6d 65 73 73 61 67 65 |n't send| message|
|000043a0| 73 20 61 74 20 63 6f 6d | 70 69 6c 65 20 74 69 6d |s at com|pile tim|
|000043b0| 65 2c 20 73 6f 20 77 65 | 0d 5c 20 20 63 61 6e 27 |e, so we|.\ can'|
|000043c0| 74 20 73 65 6e 64 20 69 | 6e 69 74 3a 2e 20 20 53 |t send i|nit:. S|
|000043d0| 6f 20 77 65 20 64 6f 20 | 69 74 20 61 74 20 53 45 |o we do |it at SE|
|000043e0| 54 55 50 5f 43 47 20 69 | 6e 20 63 67 37 2e 20 20 |TUP_CG i|n cg7. |
|000043f0| 54 68 65 20 63 6f 64 65 | 20 74 68 65 72 65 20 73 |The code| there s|
|00004400| 68 6f 75 6c 64 0d 5c 20 | 20 61 67 72 65 65 20 77 |hould.\ | agree w|
|00004410| 69 74 68 20 74 68 65 20 | 61 62 6f 76 65 2e 0d 0d |ith the |above...|
|00004420| 0d 6f 62 6a 50 74 72 09 | 74 68 65 52 65 67 73 20 |.objPtr.|theRegs |
|00004430| 20 63 6c 61 73 73 5f 69 | 73 20 4f 44 73 5f 63 6c | class_i|s ODs_cl|
|00004440| 61 73 73 09 09 5c 20 55 | 73 65 64 20 74 6f 20 70 |ass..\ U|sed to p|
|00004450| 6f 69 6e 74 20 74 6f 20 | 74 68 65 20 61 70 70 72 |oint to |the appr|
|00004460| 6f 70 72 69 61 74 65 20 | 62 61 6e 6b 0d 09 09 09 |opriate |bank....|
|00004470| 09 09 09 09 09 09 09 5c | 20 20 6f 66 20 72 65 67 |.......\| of reg|
|00004480| 73 20 69 6e 20 63 6f 64 | 65 20 77 68 69 63 68 20 |s in cod|e which |
|00004490| 63 61 6e 20 61 70 70 6c | 79 20 74 6f 0d 09 09 09 |can appl|y to....|
|000044a0| 09 09 09 09 09 09 09 5c | 20 20 6d 6f 72 65 20 74 |.......\| more t|
|000044b0| 68 61 6e 20 6f 6e 65 0d | 0d 0d 5c 20 4e 6f 77 20 |han one.|..\ Now |
|000044c0| 77 65 20 6e 65 65 64 20 | 74 6f 20 70 65 72 6d 61 |we need |to perma|
|000044d0| 6e 65 6e 74 6c 79 20 61 | 6c 6c 6f 63 61 74 65 20 |nently a|llocate |
|000044e0| 72 65 67 73 20 77 68 69 | 63 68 20 77 65 20 63 61 |regs whi|ch we ca|
|000044f0| 6e 27 74 20 75 73 65 20 | 66 6f 72 20 0d 5c 20 67 |n't use |for .\ g|
|00004500| 65 6e 65 72 61 6c 20 6f | 70 65 72 61 6e 64 73 3a |eneral o|perands:|
|00004510| 0d 0d 3a 20 41 4c 4c 4f | 43 41 54 45 5f 52 45 53 |..: ALLO|CATE_RES|
|00004520| 45 52 56 45 44 5f 52 45 | 47 53 0d 09 63 75 72 72 |ERVED_RE|GS..curr|
|00004530| 65 6e 74 3a 20 47 50 52 | 73 20 20 63 75 72 72 65 |ent: GPR|s curre|
|00004540| 6e 74 3a 20 46 50 52 73 | 0d 0d 09 30 09 09 09 09 |nt: FPRs|...0....|
|00004550| 61 6c 6c 6f 63 61 74 65 | 5f 72 65 67 3a 20 47 50 |allocate|_reg: GP|
|00004560| 52 73 20 20 73 70 65 63 | 69 61 6c 3a 20 47 50 52 |Rs spec|ial: GPR|
|00004570| 73 0d 09 72 58 5f 72 65 | 67 09 09 09 61 6c 6c 6f |s..rX_re|g...allo|
|00004580| 63 61 74 65 5f 72 65 67 | 3a 20 47 50 52 73 09 73 |cate_reg|: GPRs.s|
|00004590| 70 65 63 69 61 6c 3a 20 | 47 50 52 73 0d 09 72 59 |pecial: |GPRs..rY|
|000045a0| 5f 72 65 67 09 09 09 61 | 6c 6c 6f 63 61 74 65 5f |_reg...a|llocate_|
|000045b0| 72 65 67 3a 20 47 50 52 | 73 09 73 70 65 63 69 61 |reg: GPR|s.specia|
|000045c0| 6c 3a 20 47 50 52 73 0d | 09 72 5a 5f 72 65 67 09 |l: GPRs.|.rZ_reg.|
|000045d0| 09 09 61 6c 6c 6f 63 61 | 74 65 5f 72 65 67 3a 20 |..alloca|te_reg: |
|000045e0| 47 50 52 73 09 73 70 65 | 63 69 61 6c 3a 20 47 50 |GPRs.spe|cial: GP|
|000045f0| 52 73 0d 09 53 50 5f 72 | 65 67 09 09 09 61 6c 6c |Rs..SP_r|eg...all|
|00004600| 6f 63 61 74 65 5f 72 65 | 67 3a 20 47 50 52 73 20 |ocate_re|g: GPRs |
|00004610| 20 73 70 65 63 69 61 6c | 3a 20 47 50 52 73 0d 09 | special|: GPRs..|
|00004620| 46 53 50 5f 72 65 67 09 | 09 09 61 6c 6c 6f 63 61 |FSP_reg.|..alloca|
|00004630| 74 65 5f 72 65 67 3a 20 | 47 50 52 73 20 20 73 70 |te_reg: |GPRs sp|
|00004640| 65 63 69 61 6c 3a 20 47 | 50 52 73 0d 09 53 50 5f |ecial: G|PRs..SP_|
|00004650| 72 65 67 20 73 79 73 5f | 53 50 5f 72 65 67 20 3c |reg sys_|SP_reg <|
|00004660| 3e 0d 09 49 46 0d 09 09 | 73 79 73 5f 53 50 5f 72 |>..IF...|sys_SP_r|
|00004670| 65 67 09 61 6c 6c 6f 63 | 61 74 65 5f 72 65 67 3a |eg.alloc|ate_reg:|
|00004680| 20 47 50 52 73 20 20 73 | 70 65 63 69 61 6c 3a 20 | GPRs s|pecial: |
|00004690| 47 50 52 73 0d 09 54 48 | 45 4e 0d 09 52 54 4f 43 |GPRs..TH|EN..RTOC|
|000046a0| 5f 72 65 67 09 09 61 6c | 6c 6f 63 61 74 65 5f 72 |_reg..al|locate_r|
|000046b0| 65 67 3a 20 47 50 52 73 | 20 20 70 65 72 6d 61 6e |eg: GPRs| perman|
|000046c0| 65 6e 74 3a 20 47 50 52 | 73 0d 09 6d 61 69 6e 44 |ent: GPR|s..mainD|
|000046d0| 61 74 61 5f 72 65 67 09 | 61 6c 6c 6f 63 61 74 65 |ata_reg.|allocate|
|000046e0| 5f 72 65 67 3a 20 47 50 | 52 73 20 20 70 65 72 6d |_reg: GP|Rs perm|
|000046f0| 61 6e 65 6e 74 3a 20 47 | 50 52 73 0d 09 6d 6f 64 |anent: G|PRs..mod|
|00004700| 44 61 74 61 5f 72 65 67 | 09 09 61 6c 6c 6f 63 61 |Data_reg|..alloca|
|00004710| 74 65 5f 72 65 67 3a 20 | 47 50 52 73 20 20 70 65 |te_reg: |GPRs pe|
|00004720| 72 6d 61 6e 65 6e 74 3a | 20 47 50 52 73 0d 09 6d |rmanent:| GPRs..m|
|00004730| 61 69 6e 43 6f 64 65 5f | 72 65 67 09 61 6c 6c 6f |ainCode_|reg.allo|
|00004740| 63 61 74 65 5f 72 65 67 | 3a 20 47 50 52 73 20 20 |cate_reg|: GPRs |
|00004750| 70 65 72 6d 61 6e 65 6e | 74 3a 20 47 50 52 73 0d |permanen|t: GPRs.|
|00004760| 09 6d 6f 64 43 6f 64 65 | 5f 72 65 67 09 09 61 6c |.modCode|_reg..al|
|00004770| 6c 6f 63 61 74 65 5f 72 | 65 67 3a 20 47 50 52 73 |locate_r|eg: GPRs|
|00004780| 20 20 70 65 72 6d 61 6e | 65 6e 74 3a 20 47 50 52 | perman|ent: GPR|
|00004790| 73 0d 09 52 50 5f 72 65 | 67 09 09 09 61 6c 6c 6f |s..RP_re|g...allo|
|000047a0| 63 61 74 65 5f 72 65 67 | 3a 20 47 50 52 73 20 20 |cate_reg|: GPRs |
|000047b0| 73 70 65 63 69 61 6c 3a | 20 47 50 52 73 0d 09 6f |special:| GPRs..o|
|000047c0| 62 6a 5f 62 61 73 65 5f | 72 65 67 09 61 6c 6c 6f |bj_base_|reg.allo|
|000047d0| 63 61 74 65 5f 72 65 67 | 3a 20 47 50 52 73 20 20 |cate_reg|: GPRs |
|000047e0| 70 65 72 6d 61 6e 65 6e | 74 3a 20 47 50 52 73 0d |permanen|t: GPRs.|
|000047f0| 0d 09 33 32 20 31 73 74 | 5f 67 70 72 5f 6c 6f 63 |..32 1st|_gpr_loc|
|00004800| 61 6c 0d 09 44 4f 09 69 | 20 73 65 6c 65 63 74 3a |al..DO.i| select:|
|00004810| 20 47 50 52 73 20 20 31 | 20 70 75 74 3a 20 69 76 | GPRs 1| put: iv|
|00004820| 61 72 3e 20 72 65 66 43 | 6e 74 20 69 6e 20 47 50 |ar> refC|nt in GP|
|00004830| 52 73 20 20 73 70 65 63 | 69 61 6c 3a 20 47 50 52 |Rs spec|ial: GPR|
|00004840| 73 0d 09 4c 4f 4f 50 0d | 0d 5c 20 6e 6f 77 20 74 |s..LOOP.|.\ now t|
|00004850| 68 65 20 46 50 52 73 0d | 09 30 09 09 09 09 61 6c |he FPRs.|.0....al|
|00004860| 6c 6f 63 61 74 65 5f 72 | 65 67 3a 20 46 50 52 73 |locate_r|eg: FPRs|
|00004870| 20 20 73 70 65 63 69 61 | 6c 3a 20 46 50 52 73 0d | specia|l: FPRs.|
|00004880| 0d 09 33 32 20 31 73 74 | 5f 66 70 72 5f 6c 6f 63 |..32 1st|_fpr_loc|
|00004890| 61 6c 0d 09 44 4f 09 69 | 20 73 65 6c 65 63 74 3a |al..DO.i| select:|
|000048a0| 20 46 50 52 73 20 20 31 | 20 70 75 74 3a 20 69 76 | FPRs 1| put: iv|
|000048b0| 61 72 3e 20 72 65 66 43 | 6e 74 20 69 6e 20 46 50 |ar> refC|nt in FP|
|000048c0| 52 73 20 20 73 70 65 63 | 69 61 6c 3a 20 46 50 52 |Rs spec|ial: FPR|
|000048d0| 73 0d 09 4c 4f 4f 50 0d | 09 0d 09 73 65 6c 65 63 |s..LOOP.|...selec|
|000048e0| 74 3a 20 46 50 52 73 20 | 20 73 65 6c 65 63 74 3a |t: FPRs | select:|
|000048f0| 20 47 50 52 73 0d 3b 0d | 0d 0d 50 50 43 3f 20 6e | GPRs.;.|..PPC? n|
|00004900| 6f 74 20 5b 49 46 5d 20 | 20 61 6c 6c 6f 63 61 74 |ot [IF] | allocat|
|00004910| 65 5f 72 65 73 65 72 76 | 65 64 5f 72 65 67 73 20 |e_reserv|ed_regs |
|00004920| 20 5b 54 48 45 4e 5d 0d | 0d 0d 5c 20 57 65 20 75 | [THEN].|..\ We u|
|00004930| 73 65 20 74 68 65 73 65 | 20 6f 62 6a 65 63 74 73 |se these| objects|
|00004940| 20 74 6f 20 6b 65 65 70 | 20 74 72 61 63 6b 20 6f | to keep| track o|
|00004950| 66 20 74 68 65 20 6f 70 | 65 72 61 6e 64 73 20 61 |f the op|erands a|
|00004960| 6e 64 20 72 65 73 75 6c | 74 73 20 6f 66 20 74 68 |nd resul|ts of th|
|00004970| 65 0d 5c 20 6f 70 65 72 | 61 74 69 6f 6e 20 77 65 |e.\ oper|ation we|
|00004980| 27 72 65 20 63 75 72 72 | 65 6e 74 6c 79 20 63 6f |'re curr|ently co|
|00004990| 6d 70 69 6c 69 6e 67 3a | 0d 0d 09 72 65 66 65 72 |mpiling:|...refer|
|000049a0| 65 6e 63 65 09 4f 50 4e | 44 31 0d 09 72 65 66 65 |ence.OPN|D1..refe|
|000049b0| 72 65 6e 63 65 09 4f 50 | 4e 44 32 0d 09 72 65 66 |rence.OP|ND2..ref|
|000049c0| 65 72 65 6e 63 65 09 4f | 50 4e 44 33 0d 09 72 65 |erence.O|PND3..re|
|000049d0| 66 65 72 65 6e 63 65 09 | 4f 50 4e 44 34 0d 09 0d |ference.|OPND4...|
|000049e0| 09 72 65 66 65 72 65 6e | 63 65 09 52 45 53 31 0d |.referen|ce.RES1.|
|000049f0| 09 72 65 66 65 72 65 6e | 63 65 09 52 45 53 32 0d |.referen|ce.RES2.|
|00004a00| 09 72 65 66 65 72 65 6e | 63 65 09 52 45 53 33 0d |.referen|ce.RES3.|
|00004a10| 09 0d 09 72 65 66 65 72 | 65 6e 63 65 09 54 4d 50 |...refer|ence.TMP|
|00004a20| 52 45 46 0d 0d 09 30 09 | 76 61 6c 75 65 09 45 58 |REF...0.|value.EX|
|00004a30| 49 54 5f 43 48 41 49 4e | 0d 09 0d 0d 3a 66 20 41 |IT_CHAIN|....:f A|
|00004a40| 4c 4c 4f 43 41 54 45 5f | 47 50 52 09 61 6c 6c 6f |LLOCATE_|GPR.allo|
|00004a50| 63 61 74 65 5f 72 65 67 | 3a 20 47 50 52 73 09 3b |cate_reg|: GPRs.;|
|00004a60| 66 0d 3a 66 20 41 4c 4c | 4f 43 41 54 45 5f 46 50 |f.:f ALL|OCATE_FP|
|00004a70| 52 09 61 6c 6c 6f 63 61 | 74 65 5f 72 65 67 3a 20 |R.alloca|te_reg: |
|00004a80| 46 50 52 73 09 3b 66 0d | 3a 66 20 41 4c 4c 4f 43 |FPRs.;f.|:f ALLOC|
|00004a90| 41 54 45 5f 43 52 09 61 | 6c 6c 6f 63 61 74 65 5f |ATE_CR.a|llocate_|
|00004aa0| 72 65 67 3a 20 43 52 73 | 09 3b 66 0d 0d 3a 66 20 |reg: CRs|.;f..:f |
|00004ab0| 46 52 45 45 5f 47 50 52 | 09 09 66 72 65 65 5f 72 |FREE_GPR|..free_r|
|00004ac0| 65 67 3a 20 47 50 52 73 | 09 3b 66 0d 3a 66 20 46 |eg: GPRs|.;f.:f F|
|00004ad0| 52 45 45 5f 46 50 52 09 | 09 66 72 65 65 5f 72 65 |REE_FPR.|.free_re|
|00004ae0| 67 3a 20 46 50 52 73 09 | 3b 66 0d 3a 66 20 46 52 |g: FPRs.|;f.:f FR|
|00004af0| 45 45 5f 43 52 09 09 66 | 72 65 65 5f 72 65 67 3a |EE_CR..f|ree_reg:|
|00004b00| 20 43 52 73 09 3b 66 0d | 0d 3a 66 20 44 45 4c 5f | CRs.;f.|.:f DEL_|
|00004b10| 47 50 52 09 09 3f 64 65 | 6c 65 74 65 5f 72 65 67 |GPR..?de|lete_reg|
|00004b20| 3a 20 47 50 52 73 09 3b | 66 0d 3a 66 20 44 45 4c |: GPRs.;|f.:f DEL|
|00004b30| 5f 46 50 52 09 09 3f 64 | 65 6c 65 74 65 5f 72 65 |_FPR..?d|elete_re|
|00004b40| 67 3a 20 46 50 52 73 09 | 3b 66 0d 3a 66 20 44 45 |g: FPRs.|;f.:f DE|
|00004b50| 4c 5f 43 52 09 09 3f 64 | 65 6c 65 74 65 5f 72 65 |L_CR..?d|elete_re|
|00004b60| 67 3a 20 43 52 73 09 3b | 66 0d 0d 3a 66 20 3f 43 |g: CRs.;|f..:f ?C|
|00004b70| 4c 45 41 52 5f 47 50 52 | 09 67 65 74 3a 20 69 76 |LEAR_GPR|.get: iv|
|00004b80| 61 72 3e 20 72 65 66 43 | 6e 74 20 69 6e 20 47 50 |ar> refC|nt in GP|
|00004b90| 52 73 0d 09 09 09 09 4e | 49 46 20 20 63 6c 65 61 |Rs.....N|IF clea|
|00004ba0| 72 3a 20 69 76 61 72 3e | 20 6f 70 54 79 70 65 20 |r: ivar>| opType |
|00004bb0| 69 6e 20 47 50 52 73 20 | 20 31 20 2b 2b 3e 20 23 |in GPRs | 1 ++> #|
|00004bc0| 67 70 72 73 5f 63 6c 65 | 61 72 65 64 20 20 54 48 |gprs_cle|ared TH|
|00004bd0| 45 4e 0d 3b 66 0d 0d 3a | 66 20 3f 43 4c 45 41 52 |EN.;f..:|f ?CLEAR|
|00004be0| 5f 46 50 52 09 67 65 74 | 3a 20 69 76 61 72 3e 20 |_FPR.get|: ivar> |
|00004bf0| 72 65 66 43 6e 74 20 69 | 6e 20 46 50 52 73 0d 09 |refCnt i|n FPRs..|
|00004c00| 09 09 09 4e 49 46 20 20 | 63 6c 65 61 72 3a 20 69 |...NIF |clear: i|
|00004c10| 76 61 72 3e 20 6f 70 54 | 79 70 65 20 69 6e 20 46 |var> opT|ype in F|
|00004c20| 50 52 73 20 20 54 48 45 | 4e 0d 3b 66 0d 0d 3a 66 |PRs THE|N.;f..:f|
|00004c30| 20 3f 43 4c 45 41 52 5f | 43 52 09 67 65 74 3a 20 | ?CLEAR_|CR.get: |
|00004c40| 69 76 61 72 3e 20 72 65 | 66 43 6e 74 20 69 6e 20 |ivar> re|fCnt in |
|00004c50| 43 52 73 0d 09 09 09 09 | 4e 49 46 20 20 63 6c 65 |CRs.....|NIF cle|
|00004c60| 61 72 3a 20 69 76 61 72 | 3e 20 6f 70 54 79 70 65 |ar: ivar|> opType|
|00004c70| 20 69 6e 20 43 52 73 20 | 20 54 48 45 4e 0d 3b 66 | in CRs | THEN.;f|
|00004c80| 0d 0d 3a 66 20 55 53 45 | 5f 47 50 52 09 09 75 73 |..:f USE|_GPR..us|
|00004c90| 65 5f 74 68 69 73 3a 20 | 47 50 52 73 20 20 3b 66 |e_this: |GPRs ;f|
|00004ca0| 0d 3a 66 20 55 53 45 5f | 46 50 52 09 09 75 73 65 |.:f USE_|FPR..use|
|00004cb0| 5f 74 68 69 73 3a 20 46 | 50 52 73 20 20 3b 66 0d |_this: F|PRs ;f.|
|00004cc0| 3a 66 20 55 53 45 5f 43 | 52 09 09 75 73 65 5f 74 |:f USE_C|R..use_t|
|00004cd0| 68 69 73 3a 20 43 52 73 | 20 20 3b 66 0d 0d 3a 66 |his: CRs| ;f..:f|
|00004ce0| 20 53 45 54 5f 43 52 30 | 09 09 30 20 73 65 6c 65 | SET_CR0|..0 sele|
|00004cf0| 63 74 3a 20 43 52 73 0d | 09 09 09 09 70 75 74 3a |ct: CRs.|....put:|
|00004d00| 20 69 76 61 72 3e 20 6f | 70 43 44 50 20 69 6e 20 | ivar> o|pCDP in |
|00004d10| 43 52 73 0d 09 09 09 09 | 70 75 74 3a 20 69 76 61 |CRs.....|put: iva|
|00004d20| 72 3e 20 6f 70 54 79 70 | 65 20 69 6e 20 43 52 73 |r> opTyp|e in CRs|
|00004d30| 20 20 3b 66 0d 0d 3a 66 | 20 47 50 52 5f 43 44 50 | ;f..:f| GPR_CDP|
|00004d40| 09 09 69 6e 64 65 78 65 | 64 4f 70 43 44 50 3a 20 |..indexe|dOpCDP: |
|00004d50| 47 50 52 73 20 20 3b 66 | 0d 3a 66 20 46 50 52 5f |GPRs ;f|.:f FPR_|
|00004d60| 43 44 50 09 09 69 6e 64 | 65 78 65 64 4f 70 43 44 |CDP..ind|exedOpCD|
|00004d70| 50 3a 20 46 50 52 73 20 | 20 3b 66 0d 3a 66 20 43 |P: FPRs | ;f.:f C|
|00004d80| 52 5f 43 44 50 09 09 69 | 6e 64 65 78 65 64 4f 70 |R_CDP..i|ndexedOp|
|00004d90| 43 44 50 3a 20 43 52 73 | 20 20 3b 66 0d 0d 0d 0d |CDP: CRs| ;f....|
|00004da0| 28 2a 09 55 50 44 41 54 | 45 5f 52 45 46 43 4e 54 |(*.UPDAT|E_REFCNT|
|00004db0| 53 20 63 68 65 63 6b 73 | 20 63 73 74 6b 20 61 6e |S checks| cstk an|
|00004dc0| 64 20 65 6e 73 75 72 65 | 73 20 74 68 61 74 20 74 |d ensure|s that t|
|00004dd0| 68 65 20 72 65 66 63 6e | 74 20 66 69 65 6c 64 73 |he refcn|t fields|
|00004de0| 20 69 6e 20 61 6c 6c 20 | 72 65 67 73 0d 09 61 72 | in all |regs..ar|
|00004df0| 65 20 63 6f 72 72 65 63 | 74 2e 20 20 42 61 73 69 |e correc|t. Basi|
|00004e00| 63 20 62 6c 6f 63 6b 20 | 62 6f 75 6e 64 61 72 69 |c block |boundari|
|00004e10| 65 73 20 6f 72 20 75 70 | 64 61 74 69 6e 67 20 72 |es or up|dating r|
|00004e20| 65 66 73 20 6d 61 79 20 | 67 65 74 20 74 68 69 6e |efs may |get thin|
|00004e30| 67 73 20 6f 75 74 0d 09 | 6f 66 20 6b 69 6c 74 65 |gs out..|of kilte|
|00004e40| 72 2c 20 73 6f 20 74 68 | 69 73 20 65 6e 73 75 72 |r, so th|is ensur|
|00004e50| 65 73 20 65 76 65 72 79 | 74 68 69 6e 67 27 73 20 |es every|thing's |
|00004e60| 62 61 63 6b 20 74 6f 20 | 77 68 61 74 20 69 74 20 |back to |what it |
|00004e70| 73 68 6f 75 6c 64 20 62 | 65 2e 0d 2a 29 0d 0d 3a |should b|e..*)..:|
|00004e80| 20 55 50 44 41 54 45 5f | 52 45 46 43 4e 54 53 0d | UPDATE_|REFCNTS.|
|00004e90| 09 63 6c 65 61 72 5f 72 | 65 66 43 6e 74 73 3a 20 |.clear_r|efCnts: |
|00004ea0| 47 50 52 73 0d 09 63 6c | 65 61 72 5f 72 65 66 43 |GPRs..cl|ear_refC|
|00004eb0| 6e 74 73 3a 20 46 50 52 | 73 0d 09 63 6c 65 61 72 |nts: FPR|s..clear|
|00004ec0| 5f 72 65 66 43 6e 74 73 | 3a 20 43 52 73 0d 0d 5c |_refCnts|: CRs..\|
|00004ed0| 20 64 6f 6e 27 74 20 77 | 6f 72 72 79 20 61 62 6f | don't w|orry abo|
|00004ee0| 75 74 20 72 65 66 43 6e | 74 73 20 69 6e 20 73 74 |ut refCn|ts in st|
|00004ef0| 6f 72 65 64 5f 47 50 52 | 73 0d 0d 09 73 69 7a 65 |ored_GPR|s...size|
|00004f00| 3a 20 63 73 74 6b 20 31 | 2b 20 31 0d 09 3f 44 4f |: cstk 1|+ 1..?DO|
|00004f10| 09 69 20 73 74 6b 3a 20 | 63 73 74 6b 20 20 61 6c |.i stk: |cstk al|
|00004f20| 6c 6f 63 61 74 65 3a 20 | 63 73 74 6b 0d 09 4c 4f |locate: |cstk..LO|
|00004f30| 4f 50 0d 09 0d 09 73 69 | 7a 65 3a 20 66 63 73 74 |OP....si|ze: fcst|
|00004f40| 6b 20 31 2b 20 31 0d 09 | 3f 44 4f 09 69 20 73 74 |k 1+ 1..|?DO.i st|
|00004f50| 6b 3a 20 66 63 73 74 6b | 20 20 61 6c 6c 6f 63 61 |k: fcstk| alloca|
|00004f60| 74 65 3a 20 66 63 73 74 | 6b 0d 09 4c 4f 4f 50 0d |te: fcst|k..LOOP.|
|00004f70| 0d 09 61 6c 6c 6f 63 61 | 74 65 5f 72 65 73 65 72 |..alloca|te_reser|
|00004f80| 76 65 64 5f 72 65 67 73 | 0d 3b 0d 0d 0d 3a 20 4d |ved_regs|.;...: M|
|00004f90| 41 4b 45 5f 41 4c 54 45 | 52 45 44 5f 52 45 47 53 |AKE_ALTE|RED_REGS|
|00004fa0| 5f 55 4e 4b 4e 4f 57 4e | 0d 09 5b 20 64 65 62 75 |_UNKNOWN|..[ debu|
|00004fb0| 67 3f 20 5d 20 5b 69 66 | 5d 0d 09 09 2e 22 20 6d |g? ] [if|]...." m|
|00004fc0| 61 6b 65 5f 61 6c 74 65 | 72 65 64 5f 72 65 67 73 |ake_alte|red_regs|
|00004fd0| 5f 75 6e 6b 6e 6f 77 6e | 20 63 61 6c 6c 65 64 22 |_unknown| called"|
|00004fe0| 20 63 72 0d 09 5b 74 68 | 65 6e 5d 0d 09 6d 61 6b | cr..[th|en]..mak|
|00004ff0| 65 5f 61 6c 74 65 72 65 | 64 5f 72 65 67 73 5f 75 |e_altere|d_regs_u|
|00005000| 6e 6b 6e 6f 77 6e 3a 20 | 47 50 52 73 0d 09 6d 61 |nknown: |GPRs..ma|
|00005010| 6b 65 5f 61 6c 74 65 72 | 65 64 5f 72 65 67 73 5f |ke_alter|ed_regs_|
|00005020| 75 6e 6b 6e 6f 77 6e 3a | 20 46 50 52 73 0d 09 6d |unknown:| FPRs..m|
|00005030| 61 6b 65 5f 61 6c 74 65 | 72 65 64 5f 72 65 67 73 |ake_alte|red_regs|
|00005040| 5f 75 6e 6b 6e 6f 77 6e | 3a 20 43 52 73 0d 09 6d |_unknown|: CRs..m|
|00005050| 61 6b 65 5f 61 6c 74 65 | 72 65 64 5f 72 65 67 73 |ake_alte|red_regs|
|00005060| 5f 75 6e 6b 6e 6f 77 6e | 3a 20 73 74 6f 72 65 64 |_unknown|: stored|
|00005070| 5f 47 50 52 73 0d 3b 0d | 0d 0d 6f 62 6a 50 74 72 |_GPRs.;.|..objPtr|
|00005080| 09 6d 61 74 63 68 5f 72 | 65 67 73 09 09 63 6c 61 |.match_r|egs..cla|
|00005090| 73 73 5f 69 73 20 20 4f | 44 73 5f 63 6c 61 73 73 |ss_is O|Ds_class|
|000050a0| 0d 6f 62 6a 50 74 72 20 | 20 73 74 6f 72 65 64 5f |.objPtr | stored_|
|000050b0| 72 65 67 73 09 09 63 6c | 61 73 73 5f 69 73 20 20 |regs..cl|ass_is |
|000050c0| 4f 44 73 5f 63 6c 61 73 | 73 0d 0d 3a 20 6d 61 74 |ODs_clas|s..: mat|
|000050d0| 63 68 5f 73 74 6f 72 65 | 73 3f 20 20 7b 20 5e 72 |ch_store|s? { ^r|
|000050e0| 65 67 73 20 5e 73 74 6f | 72 65 64 5f 72 65 67 73 |egs ^sto|red_regs|
|000050f0| 20 5e 4f 44 20 73 74 6f | 72 65 2d 63 6f 64 65 20 | ^OD sto|re-code |
|00005100| 63 61 6e 42 65 53 70 65 | 63 69 61 6c 3f 20 0d 09 |canBeSpe|cial? ..|
|00005110| 09 09 09 09 5c 20 73 76 | 5f 6f 70 54 79 70 65 20 |....\ sv|_opType |
|00005120| 2d 2d 20 5e 4f 44 27 20 | 74 72 75 65 20 7c 20 2d |-- ^OD' |true | -|
|00005130| 2d 20 66 61 6c 73 65 20 | 7d 0d 0d 09 5e 72 65 67 |- false |}...^reg|
|00005140| 73 20 2d 3e 20 6d 61 74 | 63 68 5f 72 65 67 73 20 |s -> mat|ch_regs |
|00005150| 20 5e 73 74 6f 72 65 64 | 5f 72 65 67 73 20 2d 3e | ^stored|_regs ->|
|00005160| 20 73 74 6f 72 65 64 5f | 72 65 67 73 0d 0d 09 64 | stored_|regs...d|
|00005170| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 6d 61 |ebug? if|...." ma|
|00005180| 74 63 68 3f 20 64 69 64 | 6e 27 74 20 6d 61 74 63 |tch? did|n't matc|
|00005190| 68 20 66 65 74 63 68 20 | 6f 6e 20 72 65 67 73 22 |h fetch |on regs"|
|000051a0| 20 63 72 0d 09 09 2e 22 | 20 2d 20 6e 6f 77 20 61 | cr...."| - now a|
|000051b0| 74 74 65 6d 70 74 69 6e | 67 20 74 6f 20 6d 61 74 |ttemptin|g to mat|
|000051c0| 63 68 20 77 69 74 68 20 | 73 74 6f 72 65 64 20 72 |ch with |stored r|
|000051d0| 65 67 73 3a 22 20 63 72 | 0d 09 09 70 72 69 6e 74 |egs:" cr|...print|
|000051e0| 3a 20 5b 20 5e 4f 44 20 | 5d 0d 09 09 63 72 20 2e |: [ ^OD |]...cr .|
|000051f0| 22 20 73 74 6f 72 65 64 | 20 72 65 67 73 3a 20 22 |" stored| regs: "|
|00005200| 20 63 72 0d 09 09 70 72 | 69 6e 74 61 6c 6c 3a 20 | cr...pr|intall: |
|00005210| 73 74 6f 72 65 64 5f 72 | 65 67 73 20 63 72 0d 09 |stored_r|egs cr..|
|00005220| 74 68 65 6e 0d 0d 09 5e | 4f 44 20 20 67 65 74 3a |then...^|OD get:|
|00005230| 20 69 76 61 72 3e 20 6f | 70 54 79 70 65 20 69 6e | ivar> o|pType in|
|00005240| 20 63 6c 61 73 73 5f 61 | 73 3e 20 4f 44 20 20 2d | class_a|s> OD -|
|00005250| 3e 20 73 76 5f 6f 70 54 | 79 70 65 0d 09 73 74 6f |> sv_opT|ype..sto|
|00005260| 72 65 2d 63 6f 64 65 20 | 20 5e 4f 44 20 70 75 74 |re-code | ^OD put|
|00005270| 3a 20 69 76 61 72 3e 20 | 6f 70 54 79 70 65 20 69 |: ivar> |opType i|
|00005280| 6e 20 63 6c 61 73 73 5f | 61 73 3e 20 4f 44 0d 09 |n class_|as> OD..|
|00005290| 0d 09 5e 4f 44 20 20 63 | 61 6e 42 65 53 70 65 63 |..^OD c|anBeSpec|
|000052a0| 69 61 6c 3f 20 20 6d 61 | 74 63 68 3f 3a 20 73 74 |ial? ma|tch?: st|
|000052b0| 6f 72 65 64 5f 72 65 67 | 73 0d 09 0d 09 73 76 5f |ored_reg|s....sv_|
|000052c0| 6f 70 54 79 70 65 20 20 | 5e 4f 44 20 70 75 74 3a |opType |^OD put:|
|000052d0| 20 69 76 61 72 3e 20 6f | 70 54 79 70 65 20 69 6e | ivar> o|pType in|
|000052e0| 20 63 6c 61 73 73 5f 61 | 73 3e 20 4f 44 09 09 5c | class_a|s> OD..\|
|000052f0| 20 72 65 73 74 6f 72 65 | 20 69 74 0d 0d 09 64 65 | restore| it...de|
|00005300| 62 75 67 3f 20 69 66 0d | 09 09 64 75 70 20 69 66 |bug? if.|..dup if|
|00005310| 20 2e 22 20 6d 61 74 63 | 68 65 64 20 6f 6e 20 73 | ." matc|hed on s|
|00005320| 74 6f 72 65 64 20 72 65 | 67 73 22 20 65 6c 73 65 |tored re|gs" else|
|00005330| 20 2e 22 20 64 69 64 6e | 27 74 20 6d 61 74 63 68 | ." didn|'t match|
|00005340| 20 73 74 6f 72 65 64 20 | 72 65 67 73 22 20 74 68 | stored |regs" th|
|00005350| 65 6e 20 63 72 20 63 72 | 0d 09 74 68 65 6e 0d 0d |en cr cr|..then..|
|00005360| 09 4e 49 46 09 66 61 6c | 73 65 09 45 58 49 54 20 |.NIF.fal|se.EXIT |
|00005370| 20 54 48 45 4e 0d 0d 5c | 20 77 65 27 76 65 20 6d | THEN..\| we've m|
|00005380| 61 74 63 68 65 64 20 6f | 6e 20 61 20 73 74 6f 72 |atched o|n a stor|
|00005390| 65 64 20 72 65 67 2e 20 | 20 57 65 20 75 73 65 20 |ed reg. | We use |
|000053a0| 69 74 2c 20 62 75 74 20 | 63 68 61 6e 67 65 20 69 |it, but |change i|
|000053b0| 74 73 20 74 79 70 65 20 | 0d 5c 20 20 69 6e 20 47 |ts type |.\ in G|
|000053c0| 50 52 73 2f 46 50 52 73 | 20 74 6f 20 6f 74 55 6e |PRs/FPRs| to otUn|
|000053d0| 6b 6e 6f 77 6e 20 73 6f | 20 77 65 20 63 61 6e 27 |known so| we can'|
|000053e0| 74 20 63 68 61 6e 67 65 | 20 69 74 20 61 67 61 69 |t change| it agai|
|000053f0| 6e 2e 20 20 41 6e 79 20 | 61 74 74 65 6d 70 74 0d |n. Any |attempt.|
|00005400| 5c 20 20 74 6f 20 72 65 | 63 6f 6d 70 69 6c 65 20 |\ to re|compile |
|00005410| 69 74 2c 20 73 61 79 2c | 20 77 6f 75 6c 64 20 63 |it, say,| would c|
|00005420| 6c 6f 62 62 65 72 20 74 | 68 65 20 73 74 6f 72 65 |lobber t|he store|
|00005430| 20 28 74 68 65 20 76 6f | 69 63 65 20 6f 66 0d 5c | (the vo|ice of.\|
|00005440| 20 20 65 78 70 65 72 69 | 65 6e 63 65 29 2e 0d 0d | experi|ence)...|
|00005450| 09 63 75 72 72 65 6e 74 | 3a 20 73 74 6f 72 65 64 |.current|: stored|
|00005460| 5f 72 65 67 73 20 20 73 | 65 6c 65 63 74 3a 20 6d |_regs s|elect: m|
|00005470| 61 74 63 68 5f 72 65 67 | 73 0d 0d 09 61 64 64 72 |atch_reg|s...addr|
|00005480| 3a 20 73 74 6f 72 65 64 | 5f 72 65 67 73 20 20 63 |: stored|_regs c|
|00005490| 6f 70 79 4f 44 3a 20 6d | 61 74 63 68 5f 72 65 67 |opyOD: m|atch_reg|
|000054a0| 73 0d 09 6f 74 55 6e 6b | 6e 6f 77 6e 20 20 70 75 |s..otUnk|nown pu|
|000054b0| 74 3a 20 69 76 61 72 3e | 20 6f 70 54 79 70 65 20 |t: ivar>| opType |
|000054c0| 69 6e 20 6d 61 74 63 68 | 5f 72 65 67 73 0d 09 64 |in match|_regs..d|
|000054d0| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 63 68 |ebug? if|...." ch|
|000054e0| 61 6e 67 65 64 20 74 79 | 70 65 20 69 6e 20 6d 61 |anged ty|pe in ma|
|000054f0| 74 63 68 5f 72 65 67 73 | 20 74 6f 20 6f 74 55 6e |tch_regs| to otUn|
|00005500| 6b 6e 6f 77 6e 3a 22 0d | 09 09 70 72 69 6e 74 3a |known:".|..print:|
|00005510| 20 6d 61 74 63 68 5f 72 | 65 67 73 0d 09 74 68 65 | match_r|egs..the|
|00005520| 6e 0d 09 43 44 50 20 20 | 70 75 74 3a 20 69 76 61 |n..CDP |put: iva|
|00005530| 72 3e 20 6c 61 73 74 52 | 65 66 43 44 50 20 69 6e |r> lastR|efCDP in|
|00005540| 20 6d 61 74 63 68 5f 72 | 65 67 73 0d 09 62 69 67 | match_r|egs..big|
|00005550| 23 20 70 75 74 3a 20 69 | 76 61 72 3e 20 76 61 6c |# put: i|var> val|
|00005560| 69 64 54 69 6c 6c 43 44 | 50 20 69 6e 20 6d 61 74 |idTillCD|P in mat|
|00005570| 63 68 5f 72 65 67 73 0d | 09 61 64 64 72 3a 20 6d |ch_regs.|.addr: m|
|00005580| 61 74 63 68 5f 72 65 67 | 73 20 20 74 72 75 65 0d |atch_reg|s true.|
|00005590| 3b 0d 0d 0d 3a 20 4d 41 | 54 43 48 3f 20 20 7b 20 |;...: MA|TCH? { |
|000055a0| 5e 4f 44 20 63 61 6e 42 | 65 53 70 65 63 69 61 6c |^OD canB|eSpecial|
|000055b0| 3f 20 5c 20 6f 70 54 79 | 70 65 20 2d 2d 20 5e 4f |? \ opTy|pe -- ^O|
|000055c0| 44 27 20 74 72 75 65 20 | 7c 20 2d 2d 20 66 61 6c |D' true || -- fal|
|000055d0| 73 65 20 7d 0d 0d 09 61 | 6c 6c 6f 77 5f 6d 61 74 |se }...a|llow_mat|
|000055e0| 63 68 3f 20 20 4e 49 46 | 20 20 66 61 6c 73 65 20 |ch? NIF| false |
|000055f0| 20 45 58 49 54 20 20 54 | 48 45 4e 0d 0d 09 5e 4f | EXIT T|HEN...^O|
|00005600| 44 20 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |D get: i|var> opT|
|00005610| 79 70 65 20 69 6e 20 4f | 44 20 20 2d 3e 20 6f 70 |ype in O|D -> op|
|00005620| 54 79 70 65 0d 09 0d 09 | 6f 70 54 79 70 65 20 20 |Type....|opType |
|00005630| 6f 74 46 50 73 74 61 72 | 74 20 6f 74 46 50 65 6e |otFPstar|t otFPen|
|00005640| 64 20 20 77 69 74 68 69 | 6e 3f 20 6e 69 70 0d 09 |d withi|n? nip..|
|00005650| 49 46 09 09 09 09 09 09 | 09 09 5c 20 69 74 27 73 |IF......|..\ it's|
|00005660| 20 61 6e 20 46 50 20 6f | 70 20 2d 20 6a 75 73 74 | an FP o|p - just|
|00005670| 20 63 68 65 63 6b 20 46 | 50 52 73 0d 09 09 5e 4f | check F|PRs...^O|
|00005680| 44 20 63 61 6e 42 65 53 | 70 65 63 69 61 6c 3f 20 |D canBeS|pecial? |
|00005690| 20 6d 61 74 63 68 3f 3a | 20 46 50 52 73 0d 09 09 | match?:| FPRs...|
|000056a0| 49 46 20 20 61 64 64 72 | 3a 20 46 50 52 73 09 74 |IF addr|: FPRs.t|
|000056b0| 72 75 65 20 20 45 4c 53 | 45 20 20 66 61 6c 73 65 |rue ELS|E false|
|000056c0| 20 20 54 48 45 4e 20 20 | 45 58 49 54 0d 09 54 48 | THEN |EXIT..TH|
|000056d0| 45 4e 0d 0d 09 5e 4f 44 | 20 63 61 6e 42 65 53 70 |EN...^OD| canBeSp|
|000056e0| 65 63 69 61 6c 3f 20 20 | 6d 61 74 63 68 3f 3a 20 |ecial? |match?: |
|000056f0| 47 50 52 73 09 09 49 46 | 20 20 61 64 64 72 3a 20 |GPRs..IF| addr: |
|00005700| 47 50 52 73 09 74 72 75 | 65 20 20 45 58 49 54 20 |GPRs.tru|e EXIT |
|00005710| 20 54 48 45 4e 0d 09 5e | 4f 44 20 63 61 6e 42 65 | THEN..^|OD canBe|
|00005720| 53 70 65 63 69 61 6c 3f | 20 20 6d 61 74 63 68 3f |Special?| match?|
|00005730| 3a 20 43 52 73 09 09 49 | 46 20 20 61 64 64 72 3a |: CRs..I|F addr:|
|00005740| 20 43 52 73 09 74 72 75 | 65 20 20 45 58 49 54 20 | CRs.tru|e EXIT |
|00005750| 20 54 48 45 4e 0d 0d 5c | 20 6e 6f 77 20 69 66 20 | THEN..\| now if |
|00005760| 74 68 65 20 6f 70 20 69 | 73 20 61 20 66 65 74 63 |the op i|s a fetc|
|00005770| 68 2c 20 77 65 20 6e 65 | 65 64 20 74 6f 20 63 68 |h, we ne|ed to ch|
|00005780| 65 63 6b 20 66 6f 72 20 | 61 20 6d 61 74 63 68 20 |eck for |a match |
|00005790| 6f 6e 20 74 68 65 20 73 | 74 6f 72 65 73 20 6f 66 |on the s|tores of|
|000057a0| 0d 5c 20 20 74 68 61 74 | 20 6b 69 6e 64 20 6f 66 |.\ that| kind of|
|000057b0| 20 72 65 67 69 73 74 65 | 72 2e 0d 0d 09 6f 70 54 | registe|r....opT|
|000057c0| 79 70 65 20 6f 74 46 65 | 74 63 68 20 3d 0d 09 49 |ype otFe|tch =..I|
|000057d0| 46 09 47 50 52 73 20 73 | 74 6f 72 65 64 5f 47 50 |F.GPRs s|tored_GP|
|000057e0| 52 73 20 5e 4f 44 20 6f | 74 53 74 6f 72 65 20 63 |Rs ^OD o|tStore c|
|000057f0| 61 6e 42 65 53 70 65 63 | 69 61 6c 3f 20 6d 61 74 |anBeSpec|ial? mat|
|00005800| 63 68 5f 73 74 6f 72 65 | 73 3f 20 20 45 58 49 54 |ch_store|s? EXIT|
|00005810| 20 20 54 48 45 4e 0d 09 | 6f 70 54 79 70 65 20 6f | THEN..|opType o|
|00005820| 74 46 50 66 65 74 63 68 | 20 3d 0d 09 49 46 20 20 |tFPfetch| =..IF |
|00005830| 46 50 52 73 20 73 74 6f | 72 65 64 5f 46 50 52 73 |FPRs sto|red_FPRs|
|00005840| 20 5e 4f 44 20 6f 74 46 | 50 73 74 6f 72 65 20 63 | ^OD otF|Pstore c|
|00005850| 61 6e 42 65 53 70 65 63 | 69 61 6c 3f 20 6d 61 74 |anBeSpec|ial? mat|
|00005860| 63 68 5f 73 74 6f 72 65 | 73 3f 20 20 45 58 49 54 |ch_store|s? EXIT|
|00005870| 20 20 54 48 45 4e 0d 0d | 09 66 61 6c 73 65 0d 3b | THEN..|.false.;|
|00005880| 0d 0d 0d 0d 6f 62 6a 50 | 74 72 09 72 63 52 65 66 |....objP|tr.rcRef|
|00005890| 09 63 6c 61 73 73 5f 69 | 73 20 72 65 66 65 72 65 |.class_i|s refere|
|000058a0| 6e 63 65 0d 0d 3a 66 20 | 52 45 47 5f 43 48 41 4e |nce..:f |REG_CHAN|
|000058b0| 47 45 44 20 20 7b 20 5e | 72 65 66 20 2d 2d 20 7d |GED { ^|ref -- }|
|000058c0| 0d 09 5e 72 65 66 20 72 | 65 67 5f 63 68 61 6e 67 |..^ref r|eg_chang|
|000058d0| 65 64 3a 20 47 50 52 73 | 0d 09 5e 72 65 66 20 72 |ed: GPRs|..^ref r|
|000058e0| 65 67 5f 63 68 61 6e 67 | 65 64 3a 20 46 50 52 73 |eg_chang|ed: FPRs|
|000058f0| 0d 09 5e 72 65 66 20 72 | 65 67 5f 63 68 61 6e 67 |..^ref r|eg_chang|
|00005900| 65 64 3a 20 43 52 73 0d | 09 0d 5c 20 4e 6f 77 20 |ed: CRs.|..\ Now |
|00005910| 69 66 20 74 68 69 73 20 | 69 73 20 61 20 47 50 52 |if this |is a GPR|
|00005920| 2c 20 77 65 20 61 6c 73 | 6f 20 63 6c 6f 62 62 65 |, we als|o clobbe|
|00005930| 72 20 74 68 65 20 63 6f | 72 72 65 73 70 6f 6e 64 |r the co|rrespond|
|00005940| 69 6e 67 20 65 6c 65 6d | 65 6e 74 20 69 6e 0d 5c |ing elem|ent in.\|
|00005950| 20 73 74 6f 72 65 64 5f | 47 50 52 73 2c 20 73 69 | stored_|GPRs, si|
|00005960| 6e 63 65 20 61 6e 79 20 | 76 61 6c 75 65 20 74 68 |nce any |value th|
|00005970| 61 74 20 77 61 73 20 73 | 74 6f 72 65 64 20 69 73 |at was s|tored is|
|00005980| 6e 27 74 20 69 6e 20 74 | 68 69 73 20 47 50 52 20 |n't in t|his GPR |
|00005990| 61 6e 79 20 6d 6f 72 65 | 2e 0d 0d 09 5e 72 65 66 |any more|....^ref|
|000059a0| 20 2d 3e 20 72 63 52 65 | 66 0d 09 72 65 66 54 79 | -> rcRe|f..refTy|
|000059b0| 70 65 3a 20 72 63 52 65 | 66 20 20 47 50 52 72 65 |pe: rcRe|f GPRre|
|000059c0| 66 20 3d 0d 09 49 46 09 | 72 65 67 3a 20 72 63 52 |f =..IF.|reg: rcR|
|000059d0| 65 66 20 20 73 65 6c 65 | 63 74 3a 20 73 74 6f 72 |ef sele|ct: stor|
|000059e0| 65 64 5f 47 50 52 73 0d | 09 09 63 6c 65 61 72 3a |ed_GPRs.|..clear:|
|000059f0| 20 69 76 61 72 3e 20 6f | 70 54 79 70 65 20 69 6e | ivar> o|pType in|
|00005a00| 20 73 74 6f 72 65 64 5f | 47 50 52 73 0d 09 54 48 | stored_|GPRs..TH|
|00005a10| 45 4e 0d 3b 66 0d 0d 0d | 3a 20 55 50 44 41 54 45 |EN.;f...|: UPDATE|
|00005a20| 5f 45 51 5f 52 41 4e 47 | 45 53 0d 09 72 65 73 65 |_EQ_RANG|ES..rese|
|00005a30| 74 3a 20 65 71 5f 72 61 | 6e 67 65 73 0d 09 42 45 |t: eq_ra|nges..BE|
|00005a40| 47 49 4e 0d 09 09 6c 65 | 6e 3a 20 65 71 5f 72 61 |GIN...le|n: eq_ra|
|00005a50| 6e 67 65 73 20 20 30 45 | 58 49 54 0d 09 09 6e 78 |nges 0E|XIT...nx|
|00005a60| 74 4c 3a 20 65 71 5f 72 | 61 6e 67 65 73 20 20 73 |tL: eq_r|anges s|
|00005a70| 74 61 72 74 43 44 50 20 | 75 3e 0d 09 55 4e 54 49 |tartCDP |u>..UNTI|
|00005a80| 4c 0d 09 2d 34 20 73 6b | 69 70 3a 20 65 71 5f 72 |L..-4 sk|ip: eq_r|
|00005a90| 61 6e 67 65 73 0d 09 42 | 45 47 49 4e 0d 09 09 31 |anges..B|EGIN...1|
|00005aa0| 73 74 4c 3a 20 65 71 5f | 72 61 6e 67 65 73 0d 09 |stL: eq_|ranges..|
|00005ab0| 09 64 65 6c 74 61 43 44 | 50 20 2b 20 20 3e 6e 78 |.deltaCD|P + >nx|
|00005ac0| 74 4c 3a 20 65 71 5f 72 | 61 6e 67 65 73 0d 09 09 |tL: eq_r|anges...|
|00005ad0| 6c 65 6e 3a 20 65 71 5f | 72 61 6e 67 65 73 0d 09 |len: eq_|ranges..|
|00005ae0| 09 64 75 70 20 30 3c 20 | 69 66 20 2e 20 2e 22 20 |.dup 0< |if . ." |
|00005af0| 20 61 75 75 67 67 67 68 | 21 22 20 51 55 49 54 20 | auugggh|!" QUIT |
|00005b00| 74 68 65 6e 0d 09 4e 55 | 4e 54 49 4c 0d 3b 0d 0d |then..NU|NTIL.;..|
|00005b10| 0d 3a 66 20 55 50 44 41 | 54 45 5f 43 44 50 73 09 |.:f UPDA|TE_CDPs.|
|00005b20| 09 5c 20 28 20 73 74 61 | 72 74 43 44 50 20 64 65 |.\ ( sta|rtCDP de|
|00005b30| 6c 74 61 43 44 50 20 2d | 2d 20 29 0d 0d 09 2d 3e |ltaCDP -|- )...->|
|00005b40| 20 64 65 6c 74 61 43 44 | 50 20 20 2d 3e 20 73 74 | deltaCD|P -> st|
|00005b50| 61 72 74 43 44 50 0d 09 | 75 70 64 61 74 65 5f 6f |artCDP..|update_o|
|00005b60| 70 43 44 50 73 3a 20 47 | 50 52 73 0d 09 75 70 64 |pCDPs: G|PRs..upd|
|00005b70| 61 74 65 5f 6f 70 43 44 | 50 73 3a 20 46 50 52 73 |ate_opCD|Ps: FPRs|
|00005b80| 0d 09 75 70 64 61 74 65 | 5f 6f 70 43 44 50 73 3a |..update|_opCDPs:|
|00005b90| 20 43 52 73 0d 09 0d 09 | 75 70 64 61 74 65 5f 6f | CRs....|update_o|
|00005ba0| 70 43 44 50 73 3a 20 73 | 74 6f 72 65 64 5f 47 50 |pCDPs: s|tored_GP|
|00005bb0| 52 73 0d 09 0d 09 62 61 | 73 69 63 5f 62 6c 6f 63 |Rs....ba|sic_bloc|
|00005bc0| 6b 5f 73 74 61 72 74 20 | 20 73 74 61 72 74 43 44 |k_start | startCD|
|00005bd0| 50 20 75 3e 0d 09 49 46 | 20 20 64 65 6c 74 61 43 |P u>..IF| deltaC|
|00005be0| 44 50 20 2b 2b 3e 20 62 | 61 73 69 63 5f 62 6c 6f |DP ++> b|asic_blo|
|00005bf0| 63 6b 5f 73 74 61 72 74 | 20 20 54 48 45 4e 0d 0d |ck_start| THEN..|
|00005c00| 09 6c 6f 6f 70 5f 73 74 | 61 72 74 20 20 73 74 61 |.loop_st|art sta|
|00005c10| 72 74 43 44 50 20 75 3e | 0d 09 49 46 20 20 64 65 |rtCDP u>|..IF de|
|00005c20| 6c 74 61 43 44 50 20 2b | 2b 3e 20 6c 6f 6f 70 5f |ltaCDP +|+> loop_|
|00005c30| 73 74 61 72 74 20 20 54 | 48 45 4e 0d 0d 09 75 70 |start T|HEN...up|
|00005c40| 64 61 74 65 3a 20 63 6f | 6e 74 72 6f 6c 5f 73 74 |date: co|ntrol_st|
|00005c50| 6b 0d 09 75 70 64 61 74 | 65 5f 65 71 5f 72 61 6e |k..updat|e_eq_ran|
|00005c60| 67 65 73 0d 09 66 69 78 | 5f 63 6f 6e 74 61 69 6e |ges..fix|_contain|
|00005c70| 69 6e 67 5f 6c 6f 6f 70 | 0d 3b 66 0d 0d 0d 6f 62 |ing_loop|.;f...ob|
|00005c80| 6a 50 74 72 20 20 4d 53 | 5f 63 68 65 63 6b 5f 72 |jPtr MS|_check_r|
|00005c90| 65 67 73 09 63 6c 61 73 | 73 5f 69 73 20 4f 44 73 |egs.clas|s_is ODs|
|00005ca0| 5f 63 6c 61 73 73 0d 0d | 3a 66 20 63 68 65 63 6b |_class..|:f check|
|00005cb0| 5f 66 6f 72 5f 6d 6f 76 | 65 64 5f 73 74 6f 72 65 |_for_mov|ed_store|
|00005cc0| 73 20 20 7b 20 6f 6c 64 | 23 20 6e 65 77 23 20 5e |s { old|# new# ^|
|00005cd0| 72 65 66 20 2d 2d 20 7d | 0d 0d 09 5e 72 65 66 20 |ref -- }|...^ref |
|00005ce0| 20 72 65 66 54 79 70 65 | 3a 20 63 6c 61 73 73 5f | refType|: class_|
|00005cf0| 61 73 3e 20 72 65 66 65 | 72 65 6e 63 65 0d 0d 09 |as> refe|rence...|
|00005d00| 53 45 4c 45 43 54 5b 09 | 47 50 52 72 65 66 09 5d |SELECT[.|GPRref.]|
|00005d10| 3d 3e 09 09 73 74 6f 72 | 65 64 5f 47 50 52 73 20 |=>..stor|ed_GPRs |
|00005d20| 2d 3e 20 4d 53 5f 63 68 | 65 63 6b 5f 72 65 67 73 |-> MS_ch|eck_regs|
|00005d30| 0d 09 09 20 20 5b 09 46 | 50 52 72 65 66 09 5d 3d |... [.F|PRref.]=|
|00005d40| 3e 09 09 73 74 6f 72 65 | 64 5f 46 50 52 73 20 2d |>..store|d_FPRs -|
|00005d50| 3e 20 4d 53 5f 63 68 65 | 63 6b 5f 72 65 67 73 0d |> MS_che|ck_regs.|
|00005d60| 09 09 09 20 20 44 45 46 | 41 55 4c 54 3d 3e 20 20 |... DEF|AULT=> |
|00005d70| 64 72 6f 70 20 20 45 58 | 49 54 0d 09 5d 53 45 4c |drop EX|IT..]SEL|
|00005d80| 45 43 54 0d 0d 09 6f 6c | 64 23 20 73 65 6c 65 63 |ECT...ol|d# selec|
|00005d90| 74 3a 20 4d 53 5f 63 68 | 65 63 6b 5f 72 65 67 73 |t: MS_ch|eck_regs|
|00005da0| 0d 09 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |..get: i|var> opT|
|00005db0| 79 70 65 20 69 6e 20 4d | 53 5f 63 68 65 63 6b 5f |ype in M|S_check_|
|00005dc0| 72 65 67 73 20 20 6f 74 | 53 74 6f 72 65 20 3d 0d |regs ot|Store =.|
|00005dd0| 09 49 46 0d 09 09 6e 65 | 77 23 20 30 3e 3d 0d 09 |.IF...ne|w# 0>=..|
|00005de0| 09 49 46 0d 09 09 09 64 | 65 62 75 67 3f 20 69 66 |.IF....d|ebug? if|
|00005df0| 0d 09 09 09 09 63 72 0d | 2e 22 20 6d 6f 76 69 6e |.....cr.|." movin|
|00005e00| 67 20 61 20 73 74 6f 72 | 65 20 73 69 6e 63 65 20 |g a stor|e since |
|00005e10| 73 6f 75 72 63 65 20 72 | 65 67 20 68 61 73 20 6d |source r|eg has m|
|00005e20| 6f 76 65 64 20 66 72 6f | 6d 20 22 20 6f 6c 64 23 |oved fro|m " old#|
|00005e30| 20 2e 20 2e 22 20 74 6f | 20 22 20 6e 65 77 23 20 | . ." to| " new# |
|00005e40| 2e 20 63 72 0d 09 09 09 | 74 68 65 6e 0d 0d 09 09 |. cr....|then....|
|00005e50| 09 61 64 64 72 3a 20 4d | 53 5f 63 68 65 63 6b 5f |.addr: M|S_check_|
|00005e60| 72 65 67 73 0d 09 09 09 | 6e 65 77 23 20 73 65 6c |regs....|new# sel|
|00005e70| 65 63 74 3a 20 4d 53 5f | 63 68 65 63 6b 5f 72 65 |ect: MS_|check_re|
|00005e80| 67 73 0d 09 09 09 63 6f | 70 79 57 69 74 68 43 44 |gs....co|pyWithCD|
|00005e90| 50 3a 20 4d 53 5f 63 68 | 65 63 6b 5f 72 65 67 73 |P: MS_ch|eck_regs|
|00005ea0| 0d 09 09 09 72 65 63 6f | 6d 70 69 6c 65 3a 20 4d |....reco|mpile: M|
|00005eb0| 53 5f 63 68 65 63 6b 5f | 72 65 67 73 0d 09 09 09 |S_check_|regs....|
|00005ec0| 6f 6c 64 23 20 73 65 6c | 65 63 74 3a 20 4d 53 5f |old# sel|ect: MS_|
|00005ed0| 63 68 65 63 6b 5f 72 65 | 67 73 0d 09 09 54 48 45 |check_re|gs...THE|
|00005ee0| 4e 0d 09 09 63 6c 65 61 | 72 3a 20 69 76 61 72 3e |N...clea|r: ivar>|
|00005ef0| 20 6f 70 54 79 70 65 20 | 69 6e 20 4d 53 5f 63 68 | opType |in MS_ch|
|00005f00| 65 63 6b 5f 72 65 67 73 | 0d 09 54 48 45 4e 0d 3b |eck_regs|..THEN.;|
|00005f10| 66 0d 0d 0d 66 61 6c 73 | 65 09 76 61 6c 75 65 09 |f...fals|e.value.|
|00005f20| 55 53 49 4e 47 5f 43 52 | 30 0d 0d 0d 28 2a 20 4d |USING_CR|0...(* M|
|00005f30| 4f 56 45 5f 43 52 5f 42 | 49 54 20 6d 6f 76 65 73 |OVE_CR_B|IT moves|
|00005f40| 20 61 20 62 69 74 20 69 | 6e 20 74 68 65 20 43 52 | a bit i|n the CR|
|00005f50| 20 66 72 6f 6d 20 6f 6e | 65 20 70 6f 73 69 74 69 | from on|e positi|
|00005f60| 6f 6e 20 74 6f 20 61 6e | 6f 74 68 65 72 2e 0d 20 |on to an|other.. |
|00005f70| 20 20 4e 6f 74 65 20 74 | 68 61 74 20 77 65 20 63 | Note t|hat we c|
|00005f80| 61 6e 27 74 20 64 6f 20 | 74 68 69 73 20 62 79 20 |an't do |this by |
|00005f90| 72 65 63 6f 6d 70 69 6c | 69 6e 67 20 74 68 65 20 |recompil|ing the |
|00005fa0| 6f 70 2c 20 73 69 6e 63 | 65 20 74 68 65 20 6f 70 |op, sinc|e the op|
|00005fb0| 0d 20 20 20 77 61 73 20 | 61 20 63 6f 6d 70 61 72 |. was |a compar|
|00005fc0| 65 20 6f 72 20 61 6e 20 | 61 72 69 74 68 20 69 6e |e or an |arith in|
|00005fd0| 73 74 72 75 63 74 69 6f | 6e 20 74 68 61 74 20 6e |structio|n that n|
|00005fe0| 65 63 65 73 73 61 72 69 | 6c 79 20 70 75 74 20 74 |ecessari|ly put t|
|00005ff0| 68 65 0d 20 20 20 62 69 | 74 20 77 68 65 72 65 20 |he. bi|t where |
|00006000| 69 74 20 65 6e 64 65 64 | 20 75 70 20 28 65 78 63 |it ended| up (exc|
|00006010| 65 70 74 20 66 6f 72 20 | 74 68 65 20 6f 6e 65 20 |ept for |the one |
|00006020| 63 61 73 65 20 77 68 65 | 72 65 20 69 74 20 77 61 |case whe|re it wa|
|00006030| 73 20 61 0d 20 20 20 74 | 65 73 74 20 66 6f 72 20 |s a. t|est for |
|00006040| 74 68 65 20 53 41 4d 45 | 20 63 6f 6e 64 69 74 69 |the SAME| conditi|
|00006050| 6f 6e 20 77 68 69 63 68 | 20 68 61 70 70 65 6e 65 |on which| happene|
|00006060| 64 20 74 6f 20 62 65 20 | 73 65 6e 74 20 74 6f 20 |d to be |sent to |
|00006070| 61 20 64 69 66 66 65 72 | 65 6e 74 0d 20 20 20 43 |a differ|ent. C|
|00006080| 52 20 66 69 65 6c 64 29 | 2e 0d 20 20 20 54 68 65 |R field)|.. The|
|00006090| 20 6d 6f 76 65 20 63 61 | 6e 20 62 65 20 64 6f 6e | move ca|n be don|
|000060a0| 65 20 69 6e 20 6f 6e 65 | 20 69 6e 73 74 72 75 63 |e in one| instruc|
|000060b0| 74 69 6f 6e 20 2d 20 65 | 69 74 68 65 72 20 61 20 |tion - e|ither a |
|000060c0| 63 72 6f 72 20 6f 72 20 | 63 72 6e 6f 72 0d 20 20 |cror or |crnor. |
|000060d0| 20 64 65 70 65 6e 64 69 | 6e 67 20 6f 6e 20 77 68 | dependi|ng on wh|
|000060e0| 65 74 68 65 72 20 74 68 | 65 20 31 5f 69 73 5f 74 |ether th|e 1_is_t|
|000060f0| 72 75 65 3f 20 62 69 74 | 20 69 73 20 74 68 65 20 |rue? bit| is the |
|00006100| 73 61 6d 65 20 6f 72 20 | 64 69 66 66 65 72 65 6e |same or |differen|
|00006110| 74 2e 0d 2a 29 0d 0d 3a | 20 4d 4f 56 45 5f 43 52 |t..*)..:| MOVE_CR|
|00006120| 5f 42 49 54 20 20 7b 20 | 73 72 63 52 65 66 20 64 |_BIT { |srcRef d|
|00006130| 73 74 52 65 66 20 5c 20 | 77 68 69 63 68 53 72 63 |stRef \ |whichSrc|
|00006140| 42 69 74 20 77 68 69 63 | 68 44 73 74 42 69 74 20 |Bit whic|hDstBit |
|00006150| 2d 2d 20 7d 0d 09 64 65 | 62 75 67 3f 20 69 66 0d |-- }..de|bug? if.|
|00006160| 09 09 2e 22 20 6d 6f 76 | 65 5f 63 72 5f 62 69 74 |..." mov|e_cr_bit|
|00006170| 20 63 61 6c 6c 65 64 20 | 77 69 74 68 3a 20 22 20 | called |with: " |
|00006180| 20 70 72 69 6e 74 3a 20 | 5b 20 73 72 63 52 65 66 | print: |[ srcRef|
|00006190| 20 5d 20 20 70 72 69 6e | 74 3a 20 5b 20 64 73 74 | ] prin|t: [ dst|
|000061a0| 52 65 66 20 5d 20 63 72 | 0d 09 74 68 65 6e 0d 0d |Ref ] cr|..then..|
|000061b0| 09 66 61 6c 73 65 20 2d | 3e 20 63 68 65 63 6b 5f |.false -|> check_|
|000061c0| 4f 50 5f 73 74 6f 72 65 | 73 3f 09 5c 20 63 6c 61 |OP_store|s?.\ cla|
|000061d0| 73 73 65 73 20 6d 69 67 | 68 74 6e 27 74 20 6d 61 |sses mig|htn't ma|
|000061e0| 74 63 68 20 28 6d 69 67 | 68 74 20 62 65 20 63 73 |tch (mig|ht be cs|
|000061f0| 74 6b 29 0d 09 09 09 09 | 09 09 09 09 5c 20 20 62 |tk).....|....\ b|
|00006200| 75 74 20 64 6f 65 73 6e | 27 74 20 6d 61 74 74 65 |ut doesn|'t matte|
|00006210| 72 20 68 65 72 65 0d 09 | 73 72 63 52 65 66 20 2d |r here..|srcRef -|
|00006220| 3e 20 61 52 65 66 0d 09 | 64 73 74 52 65 66 20 2d |> aRef..|dstRef -|
|00006230| 3e 20 61 52 65 66 32 0d | 09 74 72 75 65 20 2d 3e |> aRef2.|.true ->|
|00006240| 20 63 68 65 63 6b 5f 4f | 50 5f 73 74 6f 72 65 73 | check_O|P_stores|
|00006250| 3f 0d 0d 09 63 6c 65 61 | 72 3a 20 69 6e 73 74 72 |?...clea|r: instr|
|00006260| 6e 0d 09 31 39 20 3e 70 | 72 69 6d 4f 70 3a 20 69 |n..19 >p|rimOp: i|
|00006270| 6e 73 74 72 6e 0d 09 31 | 5f 69 73 5f 74 72 75 65 |nstrn..1|_is_true|
|00006280| 3f 3a 20 61 52 65 66 20 | 20 31 5f 69 73 5f 74 72 |?: aRef | 1_is_tr|
|00006290| 75 65 3f 3a 20 61 52 65 | 66 32 20 20 3d 0d 09 49 |ue?: aRe|f2 =..I|
|000062a0| 46 09 09 34 34 39 09 09 | 09 09 09 5c 20 63 72 6f |F..449..|...\ cro|
|000062b0| 72 0d 09 45 4c 53 45 09 | 33 33 09 09 09 09 09 5c |r..ELSE.|33.....\|
|000062c0| 20 63 72 6e 6f 72 0d 09 | 54 48 45 4e 20 20 3e 73 | crnor..|THEN >s|
|000062d0| 65 63 4f 70 3a 20 69 6e | 73 74 72 6e 0d 09 72 65 |ecOp: in|strn..re|
|000062e0| 67 3a 20 61 52 65 66 20 | 20 34 2a 20 20 62 69 74 |g: aRef | 4* bit|
|000062f0| 23 3a 20 61 52 65 66 20 | 20 6f 72 20 20 2d 3e 20 |#: aRef | or -> |
|00006300| 77 68 69 63 68 53 72 63 | 42 69 74 0d 09 72 65 67 |whichSrc|Bit..reg|
|00006310| 3a 20 61 52 65 66 32 20 | 34 2a 20 20 62 69 74 23 |: aRef2 |4* bit#|
|00006320| 3a 20 61 52 65 66 32 20 | 6f 72 20 20 2d 3e 20 77 |: aRef2 |or -> w|
|00006330| 68 69 63 68 44 73 74 42 | 69 74 0d 09 77 68 69 63 |hichDstB|it..whic|
|00006340| 68 53 72 63 42 69 74 20 | 64 75 70 20 3e 72 41 3a |hSrcBit |dup >rA:|
|00006350| 20 69 6e 73 74 72 6e 20 | 20 3e 72 42 3a 20 69 6e | instrn | >rB: in|
|00006360| 73 74 72 6e 0d 09 77 68 | 69 63 68 44 73 74 42 69 |strn..wh|ichDstBi|
|00006370| 74 20 20 3e 72 44 3a 20 | 69 6e 73 74 72 6e 0d 09 |t >rD: |instrn..|
|00006380| 63 6f 6d 70 69 6c 65 3a | 20 69 6e 73 74 72 6e 0d |compile:| instrn.|
|00006390| 3b 0d 0d 0d 5c 09 09 09 | 3d 3d 3d 3d 3d 3d 3d 3d |;...\...|========|
|000063a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000063b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000063c0| 3d 3d 3d 3d 3d 3d 3d 0d | 0d 5c 20 4d 6f 72 65 20 |=======.|.\ More |
|000063d0| 75 74 69 6c 69 74 79 20 | 77 6f 72 64 73 0d 0d 0d |utility |words...|
|000063e0| 3a 20 53 54 4b 09 5c 20 | 53 65 6c 65 63 74 73 20 |: STK.\ |Selects |
|000063f0| 74 68 65 20 6e 74 68 20 | 63 73 74 6b 20 63 65 6c |the nth |cstk cel|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.